Custom TabBar: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 5: Line 5:
= Custom QTabBar =
= Custom QTabBar =


Something I quickly put up to demonstrate how to define a custom "QTabBar":http://doc.qt.io/qt-5.0/qtwidgets/qtabbar.html, which shows an image always center aligned (The default QTabBar aligns the icon to the left always).
Something I quickly put up to demonstrate how to define a custom "QTabBar":http://doc.qt.io/qt-5.0/qtwidgets/qtabbar.html, which shows an image always center aligned (The default QTabBar aligns the icon to the left always).


The custom tab bar class, here only showing one tab being added, the same can be extended to more tabs<br /><code><br />// header file not shown here<br />#include &quot;MyTabBar.h&amp;quot;<br />#include &lt;QLabel&amp;gt;
The custom tab bar class, here only showing one tab being added, the same can be extended to more tabs
<code>
// header file not shown here
#include "MyTabBar.h"
#include <QLabel>


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


QLabel *lbl;<br /> lbl = new QLabel();<br /> lbl-&gt;setPixmap(QPixmap(QString::fromUtf8(&quot;../../popup/5.png&amp;quot;)));<br /> lbl-&gt;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-&gt;setFixedSize(16,16);<br /> this-&gt;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>


The custom tab widget class, which uses the custom tab bar<br /><code><br />#include &quot;MyTabWidget.h&amp;quot;<br />#include &quot;MyTabBar.h&amp;quot;
The custom tab widget class, which uses the custom tab bar
<code>
#include "MyTabWidget.h"
#include "MyTabBar.h"


#include &lt;QDebug&amp;gt;
#include <QDebug>


MyTabWidget::MyTabWidget(QWidget *parent)<br /> : QTabWidget(parent)<br />{<br /> this-&gt;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-&gt;setTabBar(bar);<br />}<br /></code>
MyTabBar *bar;
bar = new MyTabBar();
this->setTabBar(bar);
}
</code>


Calling it from '''mainwindow.cpp''' as follows:<br /><code><br /> MyTabWidget *mytab;<br /> mytab = new MyTabWidget(centralWidget());<br /></code>
Calling it from '''mainwindow.cpp''' as follows:
<code>
MyTabWidget *mytab;
mytab = new MyTabWidget(centralWidget());
</code>

Revision as of 09:48, 25 February 2015


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

Custom QTabBar

Something I quickly put up to demonstrate how to define a custom "QTabBar":http://doc.qt.io/qt-5.0/qtwidgets/qtabbar.html, which shows an image always center aligned (The default QTabBar aligns the icon to the left always).

The custom tab bar class, here only showing one tab being added, the same can be extended to more tabs

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

The custom tab widget class, which uses the custom tab bar

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

Calling it from mainwindow.cpp as follows:

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