1. 程式人生 > >Qt自定義樣式/無邊框視窗/子視窗模態/非模態問題

Qt自定義樣式/無邊框視窗/子視窗模態/非模態問題

依舊是參考了諸多文章及帖子,最後測試總結如下:

1、只要是繼承自QWidget的視窗/物件,理論上都可以設定模態/非模態

2、模態是指除了本視窗內部控制元件外,直接使用.exec()執行(或先設定模態setWindowModality(Qt::ApplicationModal)或setWindowModality(Qt::WindowModal),再show())則本專案的其他視窗、部件不可以操作

3、如果要彈出窗體A,且A為父視窗B的子視窗,直接使用.exec()執行時,發現除了A視窗,B視窗仍然可以操作,很多時候這不是我們要的。

     想要A為模態視窗:

setWindowFlags(Qt::Window );  //標記本物件為視窗
//setWindowFlags(Qt::Window | Qt::FramelessWindowHint);  //且無邊框,保持最前
setWindowModality(Qt::WindowModal);  //修改其為模態視窗