Custom Tab Bar/de

From Qt Wiki
Revision as of 07:16, 2 March 2015 by Maintenance script (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


Deutsch | English | Български

Benutzerdefinierte TabBar

Im folgenden wird demonstriert, wie man eine eigene Klasse von QTabBar ableiten kann. In diesem Beispiel soll die benutzerdefinierte TabBar ein Icon immer mittig anzeigen, im Gegensatz zur originalen "QTabBar":http://doc.qt.io/qt-5.0/qtwidgets/qtabbar.html, die das Icon immer linksbündig anzeigt.

Hier der Constructor der benutzerdefinierten TabBar (es wird nur ein Tab hinzugefügt, aber eine Erweiterung auf mehr Tabs ist natürlich möglich).

// 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);
}

Eine benutzerdefinierte TabWidget-Klasse (MyTabWidget), die unsere benutzerdefinierte TabBar verwendet:

#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);
}

Und so kann man die neue TabWidget-Klasse bespielsweise in mainwindow.cpp benutzen:

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