如何在QTabWidget标头中设置QWidget?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在QTabWidget标头中设置QWidget?相关的知识,希望对你有一定的参考价值。

我想在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();
}

输出:

enter image description here

以上是关于如何在QTabWidget标头中设置QWidget?的主要内容,如果未能解决你的问题,请参考以下文章

QT 在QTabWidget中设置一些调色板

如何在Qt中获取QWidget的QTabWidget标题文本?

如何使用 QWidget 在 QTabWidget 中包含 QList

如何在 axios 中设置全局标头?

QTabWidget 方法在 QtDesigner 中不可用

如何在HTTP响应中设置标头?