我想在QTabWidget的标题中插入QLabel和QLineEdit。我已经阅读了Qt的文档,但是无法找到任何可以在QTabWidget的Header中设置任何Qwidget的函数。
我怎样才能做到这一点?或者我是否必须覆盖QTabWidget Painter功能?
有什么建议?
你必须使用setTabButton函数:
void QTabBar :: setTabButton(int index,ButtonPosition position,QWidget * widget)
在选项卡索引上设置小部件。小部件根据位置放置在左侧或右侧。
隐藏任何先前设置的小部件。
标签栏将取得窗口小部件的所有权,因此在销毁时,标签栏将删除此处设置的所有窗口小部件,除非您在设置其他窗口小部件(或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();
}
输出: