QTabWidget 或 QTabBar 使用 C++ 在不同选项卡中显示相同的 QWidget

Posted

技术标签:

【中文标题】QTabWidget 或 QTabBar 使用 C++ 在不同选项卡中显示相同的 QWidget【英文标题】:QTabWidget or QTabBar displaying the same QWidget in different tabs using C++ 【发布时间】:2016-06-02 14:46:23 【问题描述】:

我现在正在使用一个 QTabWidget,它只显示一个具有不同元素(标签、按钮等)的 QWidget。使用 Ubuntu 和 Qt5.5。

QTabWidget *tw;
QString title = "1";
ui->tw->addTab(&tab, title); // tab is my QWidget

我想在多个选项卡中显示相同的 QWidget 并具有不同的值。有没有“干净”的地方?

米夏

【问题讨论】:

【参考方案1】:

不,没有“干净”的方法可以做到这一点。 QTabWidget 使用堆栈,因此您需要为每个选项卡设置单独的小部件。据说在documentation:

每个选项卡都与不同的小部件(称为页面)相关联。

唯一的方法是实例化多个QWidget 实例并将它们添加到您的QTabWidget

QTabWidget *tw;
QString title  = "1";
QString title2 = "2";
ui->tw->addTab(&tab, title);   // tab is your QWidget
ui->tw->addTab(&tab2, title2); // tab2 is another QWidget

如果您想使用QTabBar,只需将您的小部件放入其中(例如使用QVBoxLayout)。然后连接到 QTabBar 的currentChanged 信号,根据您的需要更改您的小部件。

【讨论】:

感谢您的快速回复。太糟糕了,我不能多次插入同一个小部件。你有关于 QTabBar 而不是 QTabWidget 的经验吗? 你有可以分享的例子吗?我不完全确定如何简单地使用 QTabBar.. :/ 成功了!非常感谢你的帮助。虽然想不出更简单的解决方案。 :) 标记为已解决!

以上是关于QTabWidget 或 QTabBar 使用 C++ 在不同选项卡中显示相同的 QWidget的主要内容,如果未能解决你的问题,请参考以下文章

如何确定一个点是不是在 QTabWidget 的 QTabBar 旁边?

Qt,QWidget,QTabWidget,QTabBar:如何将文本移动到图标的底部?

如何制作没有页面的 QTabWidget

访问 QTabBar 实例

QTabWidget怎么让tab自适应大小

带有不需要的框架的 QTabBar 下的小部件