我有一個Qt主窗口,將彈出一個對話框,其中有一個確定和取消按鈕。這個對話框有一個簡單的微調器,當用戶按下確定或取消按鈕時,要求用戶輸入一個應該返回到主窗口的號碼(取消時,它會返回-1)。從用戶鎖定主窗口時,如何讓Qt對話框獲取信息?
我想過在mainWindow.cpp使用代碼的信號,像這樣:
void mainWindow::slot_openNumberDlg(){
// Create a new dialog
numberDlg dlg(this);
// Show it and wait for Ok or Cancel
if(dlg.exec() == QDialog::Accepted){
return;
}
}
但我怎麼會在對話框中返回微調的值返回到主窗口,如果它被破壞時,按鈕被按下?
我還想到了一種替代解決方案,其中我將在初始化主窗口的構造的對話框,但它未示出,直到信號在mainWindow.cpp激活一個時隙像這樣:
// Create as pointer in main.h:
numberDlg *dlg;
// Initialize pointer and setup listener in constructor (main.cpp):
mainWindow::mainWindow(){
dlg = new numberDlg();
QObject::connect(dlg, SIGNAL(sig_retVal(int)), ui->widget, SLOT(slot_showNum(int)));
}
// Make a function to handle show/close:
void mainWindow::slot_numberOpenClose(bool trigger){
if(trigger){
dlg->show();
} else {
dlg->close();
}
}
上面的代碼將能夠使用信號/插槽將對話框微調器中的數字發送到mainWindow,但不會鎖定mainWindow。我不希望用戶繼續使用mainWindow,直到對話框被接受或拒絕。
任何關於如何鎖定主窗口並在對話框關閉時發回數字的主意?