Difference between revisions of "Custom Tab Bar/bg"
From Qt Wiki
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 подравнява иконите винаги в ляво). | ||
− | Приложеният тук клас показва добавяне само на един таб, но по същият начин могат да бъдат добавени още табове. | + | Приложеният тук клас показва добавяне само на един таб, но по същият начин могат да бъдат добавени още табове. |
+ | <code> | ||
+ | // header file not shown here | ||
+ | #include "MyTabBar.h" | ||
+ | #include <QLabel> | ||
− | MyTabBar::MyTabBar(QWidget *parent) | + | MyTabBar::MyTabBar(QWidget *parent) |
+ | : QTabBar(parent) | ||
+ | { | ||
+ | this->addTab(QString()); | ||
− | QLabel *lbl; | + | 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 | + | // 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, който използва създадения таб бар: | + | Клас, наследник на "QTabWidget":http://doc.qt.nokia.com/latest/qtabwidget.html, който използва създадения таб бар: |
+ | <code> | ||
+ | #include "MyTabWidget.h" | ||
+ | #include "MyTabBar.h" | ||
#include <QDebug> | #include <QDebug> | ||
− | MyTabWidget::MyTabWidget(QWidget *parent) | + | MyTabWidget::MyTabWidget(QWidget *parent) |
+ | : QTabWidget(parent) | ||
+ | { | ||
+ | this->setGeometry(QRect(10, 10, 300, 250)); | ||
− | MyTabBar *bar; | + | MyTabBar *bar; |
+ | bar = new MyTabBar(); | ||
+ | this->setTabBar(bar); | ||
+ | } | ||
+ | </code> | ||
− | Извикване от '''mainwindow.cpp''' както следва: | + | Извикване от '''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());