關於QT 中 QDialog的幾點疑問的解答

2021-07-05 01:19:51 字數 964 閱讀 1777

1.如果使用exec()預設為模態的。如果用show()需要設定setmodel(true)才是模態的。

2.當刪除乙個dialog物件時,exec()返回qdialog::rejected,因此在刪除dialog時要特別小心。舉例說明一下:

a 是乙個qwidget 。b是乙個qdialog,b = new qdialog(a)。

int rec = b->exec();

if (!thisdeleted)

endsession()和 endsession2()都是a得成員函式。當刪除a時,b也會刪除(因為b得parent是a),這個時候exec()會返回qdialog::rejected,此時下面的 emit endsession2()還會繼續執行,這個時候就會出現端錯誤了,因為a比b先刪除,而此時還要呼叫a的成員,a都被刪除了,還能呼叫其成員函式?要是能呼叫就奇了怪了。因此在類a中多了個靜態變數thisdeleted,記得在析構a的時候把這個值改變了,這樣就不會在呼叫emit endsession2(),也就不會出現段錯了。

3.exec()是乙個迴圈時間函式,哪它什麼時候才能返回了?當呼叫 accept()(返回qdialog::accepted), reject()(返回qdialog::rejected),done(int r)(返回r),close()(返回qdialog::rejected),hide()(返回qdialog::rejected),destory()(返回qdialog::rejected)。還有就是delete 自己的時候也會返回 qdialog::rejected(destory()就會delete自己)。

4.close()會銷毀物件嘛。答案是只有當設定了 setattribute(wa:closeondelelte)是才會刪除,如果這個標誌沒有設定,其作用和hide(),setvisible(false)一樣,只會隱藏改物件。

5.當dialog在exec()時候。後台執行緒同樣可以操作介面,如收到每個訊息,還可以彈出qdialog。

Qt中自定義QDialog隱藏視窗的關閉按鈕

今天在設計乙個自定義dialog的時候想要隱藏視窗的關閉按鈕,查了好久才找到解決的辦法 1.這是一種比較極端的方法,直接建立乙個無邊框的對話方塊,無邊框,自然什麼也沒了 qdialog dlg this 建立乙個無邊框的對話方塊 dlg.setwindowflags windowflags qt f...

ACM中關於memset的用法幾點

memset的功能是將一快記憶體中的內容以單個位元組逐個拷貝的方式放到指定的記憶體中去。如memset dp,0,sizeof dp 其中dp為乙個int型陣列,因為int為4個位元組,那麼每乙個位元組的位置上都放 00000000 最好方的就是 00000000 00000000 00000000...

關於css的幾點

花了兩個星期,我看完了 精通css 高階web標準解決方案 第2版 看完了這本書我學到了很多。1 是關於背景定位的 使用畫素設定背景定位和使用百分數進行背景定位是不一樣的,如果使用畫素設定背景定位,那麼影象左上角到元素左上角的距離為指定的畫素值。而百分數定位並不對背景影象的左上角進行定位,而是使用影...