Qt 版本:5.10
工作用到帶确認按鈕的提示框,确認前不允許其它互動,用Dialog設定modal即可實作。
但實踐發現,當點到對話框外面,對話框就隐藏了,百度也沒找到解決方法;
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL9k1VaxmSzg1cG12Y25kMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxIzM4ETN0kTM5IDNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
隻好去看源碼,結果發現有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