我的应用程序在菜单栏中有一个“actionhelp”,当点击它打开一个QDialog,在主窗口的另一侧包含一个ok按钮我有一个QStackedWidget 所以我的问题是当我在QDialog中按下ok按钮时如何更改stackedwidget的索引?
答案 0 :(得分:2)
信号和插槽。连接来自ok按钮的信号(或在关闭后检查QDialog :: Accepted时发出你自己的信号)到一个将改变QStackedWidget中索引的插槽。
示例代码:
在main方法中创建并连接QAction:
QAction *displayDialog = new QAction("Display Dialog", this);
connect(popup, SIGNAL(triggered()), this, SLOT(showDialog()));
显示对话框:
void showDialog()
{
YourDialog *dialog = new YourDialog(this);
int return_code = dialog.exec();
if (return_code == QDialog::Accepted)
{
int index = someValue;
qStackedWidget.setCurrentIndex(index);
}
}
答案 1 :(得分:0)
假设您的对话框中有行编辑,并且您想根据行编辑值(或旋转框)更改堆积小部件的索引:
//your dialog
//the constructor
YourDialog::YourDialog(QWidget*parent)
:QDialog(parent)
{
connect(ur_ok_btn, SIGNAL(clicked()), SLOT(accept ()));
}
//access to line edit value
QString YourDialog::getUserEnteredValue(){return ur_line_edit->text();}
在哪里创建YourDialog类的实例:
//your main window
YourDialog dlg;
if( dlg.exec() == QDialog::Accepted ){
int i = dlg.getUserEnteredValue().toInt();
ur_stacked_widget->setCurrentIndex(i);
}