2017-07-11 59 views
0

我想在QTabWidget的頭文件中插入QLabel和QLineEdit。我已閱讀Qt的文檔,但無法找到任何可以在QTabWidget的頭文件中設置任何Qwidget的函數。如何在QTabWidget頭文件中設置QWidget?

我該怎麼做?或者我是否必須重寫QTabWidget Painter函數?

有什麼建議嗎?

+0

我不知道你所說的 「頭」 的意思,但爲['QTabBar :: setTabButton'(HTTP: //doc.qt.io/qt-5/qtabbar.html#setTabButton)你在找什麼? –

+0

@ G.M。我在說QTabWidget,setTabButton在QTabWidget中不可用。並且說標題,我的意思是頂部顯示的標籤名稱,如, secretgenes

+1

「setTabButton在QTabWidget中不可用」。不,但有['QTabWidget :: tabBar'](http://doc.qt.io/qt-5/qtabwidget.html#tabBar),因此您可以獲得與'QTabWidget'關聯的'QTabBar'。 –

回答

1

必須使用setTabButton功能:

無效QTabBar :: setTabButton(INT指數,ButtonPosition位置,QWidget的 *插件)

設置的選項卡索引部件。小部件根據位置放置在左側或右側。

隱藏了以前設置的位置控件。

標籤欄將小部件的所有權,因此所有小工具設置 這裏將標籤欄,除非你 分別設置一些其他部件後重新設置父級的部件被刪除時,它被銷燬(或0)。

此功能是在Qt 4.5中引入的。

這不是QTabWidget但其QTabBar相關。

要獲得QtabBar必須使用功能:

QTabBar * QTabWidget ::的TabBar()const的

返回當前QTabBar。

例子:

#include <QApplication> 

#include <QLabel> 
#include <QTabBar> 
#include <QTabWidget> 
#include <QLineEdit> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QTabWidget w; 
    w.addTab(new QLabel("widget 1"), "1"); 
    w.addTab(new QLabel("widget 2"), "2"); 

    QTabBar *tabBar = w.tabBar(); 

    tabBar->setTabButton(0, QTabBar::LeftSide, new QLineEdit("LineEdit0")); 
    tabBar->setTabButton(0, QTabBar::RightSide, new QLabel("label0")); 

    tabBar->setTabButton(1, QTabBar::LeftSide, new QLineEdit("LineEdit1")); 
    tabBar->setTabButton(1, QTabBar::RightSide, new QLabel("label1")); 
    w.show(); 

    return a.exec(); 
} 

輸出:

enter image description here

相關問題