c++ - 用新的小部件替换 QTabWidget 的页面

标签 c++ qt tabs widget qtabwidget

基本上我有一个 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/

相关文章:

c++ - std::unordered_map 的函数指针

c++ - Qt Index 属性返回负数

javascript - 隐藏/显示 ng-grid?

tabs - Bootstrap 4 Tab 到 Accordion。如何?

jquery - 启用禁用 jquery 选项卡

c++ - 对 std::binary_search 的神秘限制

c++ - 使用 strtok() 解析文本文件

c# - 将图像转换为要绘制的线条数组

python - QT/pyqt 标签/ token 输入

Qt 动态布局