2017-07-11 32 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

相关问题