1

私のアプリケーションにはメニューバーに「actionhelp」があり、クリックするとメインウィンドウの反対側に[OK]ボタンを含むQDialogが開きます。QStackedWidgetがあります。私の質問は、それを押したときにstackedwidgetのインデックスを変更する方法です。 QDialogの[OK]ボタン??

4

2 に答える 2

2

シグナルとスロット。QStackedWidget のインデックスを変更するスロットに、ok ボタンからの信号を接続します (または、閉じた後に QDialog::Accepted をチェックするときに独自の信号を発行します)。

コード例:

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);
    }
}
于 2013-03-19T10:30:00.783 に答える
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);
    }
于 2013-03-19T10:39:37.993 に答える