1. 程式人生 > >QWidget實現模態及非模態

QWidget實現模態及非模態

比如在一個QWidget中new一個自定義對話方塊,該對話方塊設定為setWindowModality(Qt::WindowModal),然後將這個QWidget裡面的按鍵clicked()訊號和對話方塊的show()槽函式連線起來,一旦點選就show對話方塊。這樣建立完後卻發現視窗不是模態的,原因就是沒有父視窗!首先對話方塊是不可能用佈局將其管理起來,所以其父視窗是預設0。或許有些人說在new的時候將父視窗的this傳進去了,但是模態視窗的屬性是在對話方塊建立的時候確定的,可此時父視窗QWidget根本就還沒有完全建立完,因此parent還是0,故設定對話方塊失效!解決辦法就是自定義一個槽函式,當按鍵按下時才在槽函式裡面建立對話方塊,此時QWidget已經建立完成,可以將this傳入,這樣就能夠獲得預想的結果。