QPushButton在layout中有間隙的解決方案
解決layout中pushbutton間隙
發現在boxlayout中添加qpushbutton時即使設置了自動排版,但依舊會在button之間有個小間隙,如下圖所示:
該layout中已經設置了所有的space和margin都爲0,但依舊會有上述情況,解決思路是設置margin爲負值,可以通過setstylesheet解決,在designer或代碼中設置均可,實現方式如下:
代碼設置樣式表
//方式1
ui->pushButton->setStyleSheet(QString("QPushButton{margin:-1px;}"));
ui->pushButton_2->setStyleSheet(QString("QPushButton{margin:-1px;}"));
ui->pushButton_3->setStyleSheet(QString("QPushButton{margin:-1px;}"));
//方式2
setStyleSheet(QString("QPushButton{margin:-1px;}"));//對整體pushbutton均設置-1
如果只需要某一方向解決間隙問題,可用margin-left:-1px
||margin-right:-1px
||margin-top:-1px
||margin-bottom:-1px
designer設置樣式表
效果
設置無邊框(可用於平面ui設計)
對pushbutton設置 setflat(true);
ui->pushButton->setFlat(true);
ui->pushButton_2->setFlat(true);
ui->pushButton_3->setFlat(true);
效果
另一可行方案
如果只使用pushbutton基礎功能,可以繼承Qwidgt寫一個mypushbutton類似的派生類,重寫鼠標相應,設置不同狀態(按下、懸浮、正常)按鍵圖片或顏色。
測試過在layout中添加Qwidget不存在有間隙的問題。
參考
在stackoverflow找到類似解決方案,原始方案地址回頭沒找着。