Български English

Промяна на QTabBar

В тази статия се демонстрира как да се създаде клас наследник на QTabBar [doc.qt.nokia.com], който да показва изображенията винаги центрирани (по подразбиране QTabBar подравнява иконите винаги в ляво).

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

  1. // header file not shown here
  2. #include "MyTabBar.h"
  3. #include <QLabel>
  4.  
  5. MyTabBar::MyTabBar(QWidget *parent)
  6.     : QTabBar(parent)
  7. {
  8.     this->addTab(QString());
  9.  
  10.     QLabel *lbl;
  11.     lbl = new QLabel();
  12.     lbl->setPixmap(QPixmap(QString::fromUtf8("../../popup/5.png")));
  13.     lbl->setAlignment(Qt::AlignCenter);
  14.  
  15.     // can set a larger size below too, but the icon is always center aligned
  16.     lbl->setFixedSize(16,16);
  17.     this->setTabButton(0, QTabBar::LeftSide, lbl);
  18. }

Клас, наследник на QTabWidget [doc.qt.nokia.com], който използва създадения таб бар:

  1. #include "MyTabWidget.h"
  2. #include "MyTabBar.h"
  3.  
  4. #include <QDebug>
  5.  
  6. MyTabWidget::MyTabWidget(QWidget *parent)
  7.     : QTabWidget(parent)
  8. {
  9.     this->setGeometry(QRect(10, 10, 300, 250));
  10.  
  11.     MyTabBar *bar;
  12.     bar = new MyTabBar();
  13.     this->setTabBar(bar);
  14. }

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

  1.     MyTabWidget *mytab;
  2.     mytab = new MyTabWidget(centralWidget());

Categories: