簡體   English   中英

Qt從主窗口調用時將對話框顯示為無框架

[英]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()插槽連接到任何東西。

我還要附上一張顯示對話框被調用時的圖片。 請告訴我我做的錯誤以及如何顯示帶有框架的對話框。 沒有框架的findDialog

得到它了,

在顯示對話框之前,我必須使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM