Custom Tab Bar/bg: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 7: Line 7:
В тази статия се демонстрира как да се създаде клас наследник на "QTabBar":http://doc.qt.io/qt-5.0/qtwidgets/qtabbar.html, който да показва изображенията винаги центрирани (по подразбиране QTabBar подравнява иконите винаги в ляво).
В тази статия се демонстрира как да се създаде клас наследник на "QTabBar":http://doc.qt.io/qt-5.0/qtwidgets/qtabbar.html, който да показва изображенията винаги центрирани (по подразбиране QTabBar подравнява иконите винаги в ляво).


Приложеният тук клас показва добавяне само на един таб, но по същият начин могат да бъдат добавени още табове.<br /><code><br />// header file not shown here<br />#include "MyTabBar.h"<br />#include <QLabel>
Приложеният тук клас показва добавяне само на един таб, но по същият начин могат да бъдат добавени още табове.
<code>
// header file not shown here
#include "MyTabBar.h"
#include <QLabel>


MyTabBar::MyTabBar(QWidget *parent)<br /> : QTabBar(parent)<br />{<br /> this->addTab(QString());
MyTabBar::MyTabBar(QWidget *parent)
: QTabBar(parent)
{
this->addTab(QString());


QLabel *lbl;<br /> lbl = new QLabel();<br /> lbl->setPixmap(QPixmap(QString::fromUtf8("../../popup/5.png")));<br /> lbl->setAlignment(Qt::AlignCenter);
QLabel *lbl;
lbl = new QLabel();
lbl->setPixmap(QPixmap(QString::fromUtf8("../../popup/5.png")));
lbl->setAlignment(Qt::AlignCenter);


// can set a larger size below too, but the icon is always center aligned<br /> lbl->setFixedSize(16,16);<br /> this->setTabButton(0, QTabBar::LeftSide, lbl);<br />}<br /></code>
// can set a larger size below too, but the icon is always center aligned
lbl->setFixedSize(16,16);
this->setTabButton(0, QTabBar::LeftSide, lbl);
}
</code>


Клас, наследник на "QTabWidget":http://doc.qt.nokia.com/latest/qtabwidget.html, който използва създадения таб бар:<br /><code><br />#include "MyTabWidget.h"<br />#include "MyTabBar.h"
Клас, наследник на "QTabWidget":http://doc.qt.nokia.com/latest/qtabwidget.html, който използва създадения таб бар:
<code>
#include "MyTabWidget.h"
#include "MyTabBar.h"


#include <QDebug>
#include <QDebug>


MyTabWidget::MyTabWidget(QWidget *parent)<br /> : QTabWidget(parent)<br />{<br /> this->setGeometry(QRect(10, 10, 300, 250));
MyTabWidget::MyTabWidget(QWidget *parent)
: QTabWidget(parent)
{
this->setGeometry(QRect(10, 10, 300, 250));


MyTabBar *bar;<br /> bar = new MyTabBar();<br /> this->setTabBar(bar);<br />}<br /></code>
MyTabBar *bar;
bar = new MyTabBar();
this->setTabBar(bar);
}
</code>


Извикване от '''mainwindow.cpp''' както следва:<br /><code><br /> MyTabWidget *mytab;<br /> mytab = new MyTabWidget(centralWidget());<br /></code>
Извикване от '''mainwindow.cpp''' както следва:
<code>
MyTabWidget *mytab;
mytab = new MyTabWidget(centralWidget());
</code>

Revision as of 12:10, 25 February 2015


Български English

Промяна на QTabBar

В тази статия се демонстрира как да се създаде клас наследник на "QTabBar":http://doc.qt.io/qt-5.0/qtwidgets/qtabbar.html, който да показва изображенията винаги центрирани (по подразбиране QTabBar подравнява иконите винаги в ляво).

Приложеният тук клас показва добавяне само на един таб, но по същият начин могат да бъдат добавени още табове.

// header file not shown here
#include "MyTabBar.h"
#include <QLabel>

MyTabBar::MyTabBar(QWidget *parent)
 : QTabBar(parent)
{
 this->addTab(QString());

QLabel *lbl;
 lbl = new QLabel();
 lbl->setPixmap(QPixmap(QString::fromUtf8("../../popup/5.png")));
 lbl->setAlignment(Qt::AlignCenter);

// can set a larger size below too, but the icon is always center aligned
 lbl->setFixedSize(16,16);
 this->setTabButton(0, QTabBar::LeftSide, lbl);
}

Клас, наследник на "QTabWidget":http://doc.qt.nokia.com/latest/qtabwidget.html, който използва създадения таб бар:

#include "MyTabWidget.h"
#include "MyTabBar.h"

#include <QDebug>

MyTabWidget::MyTabWidget(QWidget *parent)
 : QTabWidget(parent)
{
 this->setGeometry(QRect(10, 10, 300, 250));

MyTabBar *bar;
 bar = new MyTabBar();
 this->setTabBar(bar);
}

Извикване от mainwindow.cpp както следва:

 MyTabWidget *mytab;
 mytab = new MyTabWidget(centralWidget());