問題描述
Qt界面開發程序中,使用自定義的QGroupBox,重寫繪圖事件paintEvent時,出現邊框被覆寫的情況,或邊框消失的問題, 左圖是原始狀態,直接重寫繪圖事件后,會變成右圖空白狀態,
圖1 圖2
原因與解決方法
這是因為,默認的繪圖事件存在給GroupBox類繪制邊框的代碼,所以重寫的時候被覆寫了,要恢復默認狀態,需要在重寫的paintEvent函式中,先繼承父類的方法,呼叫默認的繪圖事件,再去寫自己需要的代碼,如下:// MyGroupBox繼承自QGroupBox void MyGroupBox::paintEvent(QPaintEvent * event) { // 需要先呼叫父類方法,因為重寫了 QGroupBox::paintEvent(event); this->setTitle("GroupBox"); // 這個是繪制黑色的邊框 // 邊框設定參考:https://blog.csdn.net/weixin_44335538/article/details/126365191 this->setStyleSheet("QGroupBox{border:1px solid black; margin-top: 2.3ex;}" "QGroupBox::title{subcontrol-origin:margin;left: 10px;}" "QGroupBox *{}"); // 下面可以寫自己的代碼 // ...... // ...... }
PS:上面關于 QGroupBox 黑色邊框的設定,搜過很多Qt Style Sheets(QSS)設定引數,但只有上面這個自己電腦可以用,并且一定要加 "QGroupBox *{}" 才不會標題下沉,雖然我也不曉得為啥,有知道原因的朋友歡迎交流!!
回答:后來自己又多試了幾遍,可以慢慢調整 margin-top 這個引數改變標題位置,并且不同設備可能有些出入,setStyleSheet 可以參考 QT 官方關于 QSS 樣式表的教程:The Style Sheet Syntax,學習一下,
參考文章
Stackoverflow-PyQt5: Why does the default style of a QGroupBox disappear when painting?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/540271.html
標籤:其他
上一篇:Controller 層代碼就該這么寫,簡潔又優雅!
下一篇:分布式ID生成方案
