基本上我有一个 QTabWidget。起初它有一个表单小部件 widget1。在完成与该表单的交互后,新的 widget2 表单应该接管同一个选项卡。
我认为 tabWidget->setCurrentWidget(new widget2());
会起作用,但它基本上是 setCurrentIndex(int)
的重载。
有谁知道这样做的方法吗?
最佳答案
您可以使用 QStackedWidget
对于这种类型的东西,在选项卡或其他地方。
将您希望在该选项卡中显示的所有小部件放在单个 QStackedWidget
中,然后将堆叠的小部件放在一个选项卡中。
这是一个简单的演示:
#include <QtGui>
class W: public QWidget
{
Q_OBJECT
public:
W(QWidget *parent=0): QWidget(parent)
{
// stacked widget displays one of its "children" at a time
QStackedWidget *sw = new QStackedWidget;
QPushButton *b1 = new QPushButton("hello");
sw->addWidget(b1);
QPushButton *b2 = new QPushButton("world");
sw->addWidget(b2);
// tab widget and simplistic layout
QTabWidget *tw = new QTabWidget(this);
tw->addTab(sw, "tab");
QHBoxLayout *l = new QHBoxLayout;
l->addWidget(tw);
setLayout(l);
// signal mapper to demo the widget switching
QSignalMapper *m = new QSignalMapper(this);
connect(b1, SIGNAL(clicked()), m, SLOT(map()));
m->setMapping(b1, 1);
connect(b2, SIGNAL(clicked()), m, SLOT(map()));
m->setMapping(b2, 0);
connect(m, SIGNAL(mapped(int)), sw, SLOT(setCurrentIndex(int)));
}
};
关于c++ - 用新的小部件替换 QTabWidget 的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10263229/