基本的に私はQTabWidgetを持っています。最初は、フォームウィジェットwidget1があります。そのフォームの操作が完了すると、新しいwidget2フォームが同じタブを引き継ぐ必要があります。
うまくいくと思いtabWidget->setCurrentWidget(new widget2());
ましたが、基本的にはオーバーロードですsetCurrentIndex(int)
。
誰かがこれを行う方法を知っていますか?
基本的に私はQTabWidgetを持っています。最初は、フォームウィジェットwidget1があります。そのフォームの操作が完了すると、新しいwidget2フォームが同じタブを引き継ぐ必要があります。
うまくいくと思いtabWidget->setCurrentWidget(new widget2());
ましたが、基本的にはオーバーロードですsetCurrentIndex(int)
。
誰かがこれを行う方法を知っていますか?
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)));
}
};