【发布时间】: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的调用以查看其有什么影响(如果有的话)。
标签: c++ qt tabs qtabwidget