我想在QLabel的头部插入QTabWidget和QLineEdit。我已经阅读了Qt的文档,但没有找到任何可以在QTabWidget头中设置任何Qwidget的函数。
我该怎么做?还是我必须重写QTabWidget Painter函数?
有什么建议吗?
发布于 2017-07-11 22:21:34
您必须使用setTabButton函数:
void::setTabButton(int索引、ButtonPosition位置、QWidget *小部件) 在选项卡索引上设置小部件。根据位置的不同,小部件被放置在左侧或右侧。 任何先前设置的小部件都是隐藏的。 选项卡条将获得小部件的所有权,因此这里设置的所有小部件在被销毁时都将被选项卡栏删除,除非在设置了其他小部件(或0)之后,单独重新创建小部件。 这一功能是在QT4.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();
}输出:

https://stackoverflow.com/questions/45042508
复制相似问题