我想在QTabWidget的标题中插入QLabel和QLineEdit。我已经阅读了Qt的文档,但是找不到任何可以在QTabWidget的Header中设置任何Qwidget的函数。
我该怎么做?或者我是否必须覆盖QTabWidget Painter函数?
任何建议?
答案 0 :(得分:2)
您必须使用setTabButton功能:
void QTabBar :: setTabButton(int index,ButtonPosition position,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();
}
输出: