[英]Qt showing a dialog as frameless when called from main window
我正在學習qt,正在嘗試從書中舉一個例子,我們必須在主窗口應用程序中調用預制對話框。
我已經創建了一個對話框,該對話框將用於輸入字符串(將其稱為findDialog),輸入的字符串將傳遞到QTableWidget中的自定義插槽,以搜索輸入的字符串。
觸發名為“查找”的動作后,我可以立即調用對話框,但是問題是對話框顯示為無框架。
我正在這樣調用對話框,請指出任何錯誤。
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()插槽連接到任何東西。
得到它了,
在顯示對話框之前,我必須使用setWindowFlags設置窗口標志。
finddialog->setWindowFlags(Qt::Dialog);
顯示為對話框
or
finddialog->setWindowFlags(Qt::Window);
顯示為一個窗口
您必須創建finddialog
適當Qt::WindowFlags
。 參見文檔: Qt :: WindowFlags 。 例如:
finddialog = new findDialog(this, Qt::Window);
指示窗口小部件是一個窗口,通常具有窗口系統框架和標題欄,而與窗口小部件是否具有父級無關。 請注意,如果小部件沒有父級,則無法取消設置此標志。
也是有用的例子 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.