2012-04-21 17 views
1

私は基本的にQTabWidgetを持っています。最初はフォームウィジェットwidget1を持っています。そのフォームがやりとりされた後、新しいwidget2フォームが同じタブを引き継ぐはずです。QTabWidgetのページを新しいウィジェットに置き換えます。

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

これを行う方法を知っている人はいますか?

答えて

3

このタイプのものは、タブなどでQStackedWidgetを使用できます。

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

はここquick'n'dirtyのデモです:

#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))); 
    } 
}; 
+0

おかげでこれで行きます。 – user1334943

関連する問題