我正在學習qt,並試圖從書中獲取示例,我們必須從主窗口應用程序調用預製對話框。Qt顯示從主窗口調用時無框對話框
我已經做了一個對話框,用於輸入一個字符串(我們稱之爲findDialog),輸入的字符串被傳遞給QTableWidget中的自定義槽以搜索輸入的字符串。
只要觸發一個名爲「find」的操作,我就可以調用對話框,但問題是對話框顯示爲無框。
我打電話給這樣的對話框,請指出任何錯誤。
void MainWindow::find()
{
// Check whether findDialog is already created
if(!finddialog)
{
// create find dialog as a child to main window
finddialog = new findDialog(this);
// Connecting signals and slots
connect(finddialog,SIGNAL(forwardSearch(QString,Qt::CaseSensitivity)),
sheetObject,SLOT(forwardSearch(QString,Qt::CaseSensitivity)));
connect(finddialog,SIGNAL(backwardSearch(QString,Qt::CaseSensitivity)),
sheetObject,SLOT(backwardSearch(QString,Qt::CaseSensitivity)));
}
// Show dialog
finddialog->show();
finddialog->move(200,200);
// Raise if minimised
finddialog->raise();
// Activate it
finddialog->activateWindow();
}
我不能使用exec因爲我沒有將findDialog中的accept()槽連接到任何東西。
我也附上一張照片,顯示對話時它已被調用。請告訴我我已經完成的錯誤以及如何使用框架顯示對話框。
我編輯的代碼,但它是表示作爲 '錯誤:對呼叫「FindDialog的不匹配的函數:: findDialog(MainWindow *,Qt :: WindowType)' finddialog = new findDialog(this,Qt :: Dialog);' –
即使做了這個---> public: 顯式的findDialog(QWidget * parent = 0, Qt :: WindowType = Qt :: Window); 〜findDialog();' 它仍然沒有顯示框架。 –
如果'FindDialog'繼承了'QDialog',它將自動產生'Qt :: Window'標誌,參見docs [here](https://doc.qt.io/qt-5/qdialog.html#QDialog)和代碼[here](https://code.qt.io/cgit/qt/qtbase.git/tree/src/widgets/dialogs/qdialog.h#n60)。每次你想實例化一個FindDialog時,請不要傳遞這樣的內容。相反,將你想要的行爲設爲**默認的**行爲,並且只是實例化你的FindDialog.you你將不得不通過標誌**當你想要標誌而不是'Qt :: Window'時。 – Mike