将选项卡添加到 QTabWidget 时显示问题

Posted

技术标签:

【中文标题】将选项卡添加到 QTabWidget 时显示问题【英文标题】:Display issue when adding tab to QTabWidget 【发布时间】:2018-07-12 14:35:19 【问题描述】:

我正在尝试将选项卡添加到现有 QTabWidget。我用一个现有的选项卡在 QT Designer 中布置了选项卡。然后我以编程方式添加了一个选项卡。从视觉上看,第一个选项卡几乎完全消失,因为新选项卡与其重叠。如果我尝试单击原始选项卡,它会完全消失并被新选项卡取代。添加其他选项卡可以正常工作,只是原来的选项卡仍然消失了。

我尝试从方程式中删除 QT 设计器并复制代码。我仍然有同样的问题。这是我的代码现在的样子:

outputLogGroupBox 是一个 QGroupBox *

static QTabWidget *diagnosticsTabWidget;

diagnosticsTabWidget = new QTabWidget(m_qUI.outputLogGroupBox);
diagnosticsTabWidget->setObjectName(QStringLiteral("diagnosticTabWidget"));
diagnosticsTabWidget->setGeometry(QRect(16, 79, 421, 551));

QWidget * outputTab = new QWidget();
outputTab->setObjectName(QStringLiteral("Output"));

diagnosticsTabWidget->addTab(outputTab, QString());
diagnosticsTabWidget->setTabText(diagnosticsTabWidget->indexOf(outputTab), QStringLiteral("Output"));

diagnosticsTabWidget->setCurrentIndex(0);
diagnosticsTabWidget->setHidden(false);



QWidget * newTab = new QWidget();
diagnosticsTabWidget->addTab(newTab, "test");

如果我忽略了 newTab 的创建,我会看到我的原始选项卡 (outputTab) 很好。随着第二个选项卡的创建,我看到一个选项卡包含原始选项卡(输出)的部分名称和第二个选项卡(测试)的名称。如果我添加第三个选项卡,我会得到与第二个选项卡相同的结果,除了第三个选项卡。单击任何选项卡会显示一组正确的选项卡,但缺少原始选项卡。

【问题讨论】:

我尝试在 qt 设计器中创建一个全新的选项卡。同样的问题。 无法使用所示代码重现 (Linux + Qt5.11.0)。 我使用的是 qt 5.1.0。我希望您使用的是更新的东西。我不敢相信这是一个 qt 错误,但很高兴知道我没有错过代码中的愚蠢之处。我将尝试用一个标签小部件创建一个新项目,看看会发生什么 我直接通过 qt 设计器创建了一个带有两个选项卡的新选项卡小部件。即使没有我手动做任何事情,我也会遇到完全相同的问题。 实际上,我确实对显示的代码进行了更改。我构造了diagnosticsTabWidget没有父母——所以只是diagnosticsTabWidget = new QTabWidget;。不确定在这种情况下这是否重要。此外,鉴于您确实为 diagnosticsTabWidget 提供了父母,您可能希望删除对 setGeometry 的调用以查看其有什么影响(如果有的话)。 【参考方案1】:

我是个白痴。

在尝试让其他东西正常工作时,我在样式表中乱七八糟并添加了以下内容:

setStyleSheet("QTabBar::tab:first max-width: 0px;");

显然,当只有一个选项卡时,这不会影响事情,但是当一个选项卡添加第二个时......

【讨论】:

以上是关于将选项卡添加到 QTabWidget 时显示问题的主要内容,如果未能解决你的问题,请参考以下文章

将图标添加到选项卡(QTabWidget)?

PyQt5 动态将 QFormLayouts 添加到 QTabWidget 的选项卡中

PyQt4 菜单操作以将新选项卡添加到 QTabWidget

选项卡未添加到 QTabWidget

将 QScrollArea 添加到 QTabWidget

避免 QTabWidget 中的重复选项卡