天天看點

QML模态對話框Dialog關閉方式

Qt 版本:5.10

工作用到帶确認按鈕的提示框,确認前不允許其它互動,用Dialog設定modal即可實作。

但實踐發現,當點到對話框外面,對話框就隐藏了,百度也沒找到解決方法;

QML模态對話框Dialog關閉方式

隻好去看源碼,結果發現有closePolicy這個屬性,簡單有效。沒有什麼是源碼不能解決的~

\Qt\Qt5.10.0\5.10.0\Src\qtquickcontrols2\src\quicktemplates2\qquickpopup_p.h

enum ClosePolicyFlag {
        NoAutoClose = 0x00,
        CloseOnPressOutside = 0x01,
        CloseOnPressOutsideParent = 0x02,
        CloseOnReleaseOutside = 0x04,
        CloseOnReleaseOutsideParent = 0x08,
        CloseOnEscape = 0x10
    };
    Q_DECLARE_FLAGS(ClosePolicy, ClosePolicyFlag)
    Q_FLAG(ClosePolicy)

    ClosePolicy closePolicy() const;
    void setClosePolicy(ClosePolicy policy);
    void resetClosePolicy();
           

是以隻需要設定這個屬性為NoAutoClose即可

Dialog{
    id:mainWindow
    visible: false
    modal: true
    closePolicy: Popup.NoAutoClose
           

參考緻謝:

1、https://blog.csdn.net/zbw1185/article/details/78868311

2、https://blog.csdn.net/CLP_CSDNID/article/details/80318074

3、https://blog.csdn.net/u012199908/article/details/88861833

qml