中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

QT ui 帶來麻煩

發布時間:2020-07-27 15:56:09 來源:網絡 閱讀:325 作者:WZM3558862 欄目:開發技術

setupUi()引起的麻煩

 

由.ui文件生成的類的構造函數里都有一個setupUi(this)。這個函數的作用是對界面進行初始化,它按照我們在Qt設計器里設計的樣子把窗體畫出來,把我們在Qt設計器里面定義的信號和槽建立起來。也可以說,setupUi 是我們畫界面和寫程序之間的橋梁。
但有一點需要注意的是,setupUi在執行的時候會觸發界面上的事件。如果忽視了這點,那可能就會遇到一些莫明其妙的麻煩。
我曾在一個類的構造函數里這樣寫:

    setupUi(this);    //系統自動生成的
    bool flag=false;    //對我自己定義的變量初始化
    ...

界面上有一個tabWidget,我定義了一個槽來接收tabWidget的tabClicked()信號,在該槽里用到flag變量。
調試程序中發現此類不穩定,經常會在類生成時突然跳出,什么提示也沒有。
起初我以為類的構造函數應該是最先執行的,構造完成之后這個類才開始正式運轉,發生各種信號和槽的關系。這么考慮起來,這個類沒有任何理由不穩定。可是從現象上看,一定是有某個地方有內存操作的異常,這個異常引起了程序的不可靠。
問題出面哪里?
我懷疑過開發環境,于是從QDevelop環境遷移到了QCreator,不管用。懷疑過操作平臺,換了幾個Linux的發行版,也不好使。
后來在QCreator的調試模式下運行,在系統崩潰后查看調用棧時發現,類生成的過程里,居然觸發了好多窗體上的事件!
這一定是setupUi運行時發生的事。
因為在類的構造函數里我把自己定義的變量初始化都放到了setupUi之后,這樣,在窗體事件時用到了一些未初始化的變量,從而引起系統不可靠。
后來修改了類的構造函數,把setupUi移到變量初始化的后面,于是問題全部解決


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

qt
AI

临安市| 巴南区| 岐山县| 珠海市| 台南市| 宝应县| 抚顺市| 溧水县| 封丘县| 新绛县| 云林县| 元阳县| 济源市| 高邮市| 大荔县| 齐河县| 西城区| 田林县| 抚顺县| 花垣县| 凤阳县| 苍溪县| 澳门| 田阳县| 宜黄县| 迭部县| 日照市| 都兰县| 嵊州市| 许昌县| 三穗县| 雅江县| 凌云县| 平乐县| 香格里拉县| 旅游| 岫岩| 犍为县| 郯城县| 东源县| 泰顺县|