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

QTabWidget or QTabBar displaying the same QWidget in different tabs using C++

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

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

我想在多个具有不同值的选项卡中显示相同的 QWidget。有 "clean" 吗?

米卡

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

Each tab is associated with a different widget (called a page).

唯一的方法是实例化 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 信号以根据您的需要更改您的小部件。