Qt 取消window標題欄事件失效
阿新 • • 發佈:2019-01-27
這篇文章應該是昨天的 , 昨天佈局一個遊戲代練平臺的專案,因為介面的美觀需要隱藏window自帶的標題欄,重新自定義標題欄. 我想這種事情很多人都做過,現在大多數專案中都會為了使用者體驗而重新定義介面的佈局. 當我去掉標題欄的時候( Qt5 隱藏標題欄 setWindowFlag( Qt::FrameLessWIndowHint) ,編譯執行,執行起來,標題欄隱藏了 , 但是出現了另外一個問題,我的介面上的所有的控制元件的效果都沒了 , 比如說 ,按鈕點選效果失效了.還有QTableWidget 點選選中的呈現的行顏色也不見了 , 甚至於 QComboBox 失去了他原來的功能,更有甚至不能點選功能性的喪失.當時就特別的鬱悶.
當時我的第一反應就是事件傳遞的原因,因為我在該專案中的大量的使用了”事件捕捉”就是我們常說的事件過濾,當我把所有的事件過濾全部註釋掉的時候還是不可以.無奈之後走了特別多的彎路,已經束手無策的時候,準備重新將程式碼重新複製新建 Qt類重新實現( 因為當時我已經寫demo測試過去掉標題欄之後的QWidget中的元件是沒有任何影響的,已經確定就是我的程式碼的問題),重新實現後是好的 , 事件也接受傳遞.當我佈局完成之後,原來的錯誤又重新出現了.然後我又重新打破布局.事件傳輸又正常了.
各位看官們,已經猜到了 ,是佈局的問題,最後得出結論, 當Qt Creator 實現佈局,把 邊距全部設定為零,你的介面元件全部覆蓋window元件時,然後又把標題欄去掉, 事件就是受到影響.解決辦法就是,去掉標題欄之後留一點點的邊距.
純文字 描述;