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找到类似解决方案,原始方案地址回头没找着。