2010-04-12 64 views
3

我在我的mainWindow上使用QStackedWidget。 stackedWidget上的firstPageWidget包含3個按鈕。現在,如果我按第一頁上的第一個按鈕,我想讓stackedWidget顯示第二頁小部件。以下是詳細信息QStackedWidget上的幫助

我試圖像這樣在我的主窗口連接

connect(firstPageWidget->button1,SIGNAL(clicked()),stackWidget,SLOT(setCurrentIndex(int))); 

現在我想知道怎樣的索引號的值傳遞給stackWidget設置CURRENTINDEX?

如果我的問題不太清楚,請告訴我,我會解釋更多。

回答

5

您可能需要使用QSignalMapper類:

QSignalMapper mapper = new QSignalMapper(); // don't forget to set the proper parent 
mapper->setMapping(firstPageWidget->button1, 2); // 2 can be replaced with any int value 
connect(firstPageWidget->button1, SIGNAL(clicked()), mapper, SLOT(map())); 
connect(mapper, SIGNAL(mapped(int)), stackWidget, SLOT(setCurrentIndex(int))); 
0

相反的按鈕,你可以使用包含可選圖標的QListWidget。 QListWidget有一個名爲QListWidget::currentItemChanged (QListWidgetItem * current, QListWidgetItem * previous)的方法。我用這個方法在程序中我寫了前一段時間......在那裏,我寫了一個函數on_change_widget(QListWidgetItem *current, QListWidgetItem *previous)我連接到信號currentItemChanged

connect(my_list_widget, 
     SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), 
     this, 
     SLOT(on_change_widget(QListWidgetItem *, QListWidgetItem *)) 
     ); 

這應該做的伎倆。

你應該看看Config Dialog Example,他們在那裏使用相同的方法來交換小部件。

當然,您也可以使用普通按鈕,與上述QSignalMapper chalup相關。

0

您還可以使用QButtonGroup和正確的ID設置到每個按鈕,然後用疊插件插槽QStackedWidget::setCurrentIndex(int)

連接QButtonGroup信號 QButtonGroup::buttonClicked(int)