我在我的mainWindow上使用QStackedWidget。stackedWidget上的firstPageWidget包含3个按钮。现在,如果我要在firstPage上按下第一个按钮,我希望stackedWidget显示第二页小部件。以下是详细信息
我试着在我的主窗口中这样连接
connect(firstPageWidget->button1,SIGNAL(clicked()),stackWidget,SLOT(setCurrentIndex(int)));现在我想知道如何将索引号的值传递给stackWidget来设置currentIndex?
如果我的问题不是很清楚,请告诉我,我会解释更多。
发布于 2010-04-12 13:31:45
您可能需要使用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)));发布于 2010-04-12 20:22:15
你可以使用一个包含可选择图标的QListWidget来代替按钮。QListWidget有一个名为QListWidget::currentItemChanged ( QListWidgetItem * current, QListWidgetItem * previous )的方法。我在一段时间前写的一个程序中使用了这种方法。在那里,我编写了一个连接到信号currentItemChanged的函数on_change_widget( QListWidgetItem *current, QListWidgetItem *previous )
connect( my_list_widget,
SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
this,
SLOT(on_change_widget(QListWidgetItem *, QListWidgetItem *))
);这应该能起到作用。
你应该看看Config Dialog Example,在那里他们使用相同的方法交换小部件。
当然,你也可以使用普通的按钮,与前面提到的QSignalMapper chalup相关。
发布于 2010-04-13 18:32:12
您还可以使用QButtonGroup并为每个按钮设置适当的id,然后将QButtonGroup信号QButtonGroup::buttonClicked(int)与堆叠的小部件插槽QStackedWidget::setCurrentIndex(int)连接
https://stackoverflow.com/questions/2619885
复制相似问题