1

基本的に私はQTabWidgetを持っています。最初は、フォームウィジェットwidget1があります。そのフォームの操作が完了すると、新しいwidget2フォームが同じタブを引き継ぐ必要があります。

うまくいくと思いtabWidget->setCurrentWidget(new widget2());ましたが、基本的にはオーバーロードですsetCurrentIndex(int)

誰かがこれを行う方法を知っていますか?

4

1 に答える 1

3

QStackedWidgetタブまたは他の場所で、このタイプのものにを使用できます。

表示するすべてのウィジェットを1つのタブ内のそのタブにQStackedWidget配置し、そのスタックされたウィジェットをタブに配置します。

これが簡単な「n」ダーティデモです:

#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)));
    }
};
于 2012-04-21T21:54:05.377 に答える