У моего приложения есть «actionhelp» в строке меню, которая при нажатии открывает QDialog, который содержит кнопку «ОК» на другой стороне главного окна, у меня есть QStackedWidget
Так что мой вопрос, как изменить индекс сложенного виджета, когда я нажимаю эту кнопку ОК в QDialog ??
Сигналы и слоты. Подключите сигнал от кнопки ok (или подайте одну из ваших собственных при проверке QDialog :: Accepted после ее закрытия) к слоту, который изменит индекс в QStackedWidget.
Пример кода:
Создайте и подключите 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);
}
}
Предполагая, что у вас есть редактирование строки в вашем диалоге, и вы хотите изменить индекс сложенного виджета, основываясь на значении редактирования строки (или поле прокрутки):
//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);
}