启用选中时Qt QPushButton会更改大小
Posted
技术标签:
【中文标题】启用选中时Qt QPushButton会更改大小【英文标题】:Qt QPushButton changes size when checked is enabled 【发布时间】:2019-07-12 08:06:42 【问题描述】:我在QGridLayout
上有两个QPushButton
,其中一个按钮选中,另一个未选中:
class MyFrame : QFrame()
MyFrame() init();
void init()
setStyleSheet("QPushButton background-color:#292929; color: white; QPushButton:hover background-color: #505050; color: white; QPushButton:pressedbackground-color: #F79862; QPushButton:checkedbackground-color: #F79862;border:none; QToolTip color: #404040; ");
auto layout = new QGridLayout();
auto btn1 = new QPushButton("btn1");
auto btn2 = new QPushButton("btn2");
btn1->setCheckable(true);
btn2->setCheckable(true);
btn1->setChecked(false);
btn2->setChecked(true);
layout->addWidget(btn1, 0, 0, 1, 1);
layout->addWidget(btn2, 0, 1, 1, 1);
QVBoxLayout* grid = new QVBoxLayout();
MyFrame* myFrame = new MyFrame();
grid->addWidget(myFrame);
但是,当我运行程序时,其中一个按钮似乎比另一个大。如何使按钮大小相似?
我使用的是 Qt 5.11.2。
【问题讨论】:
手动更改其状态时,大小是否也会更改? @SilvanoCerza 不,它没有 您能否添加一张图片和更多代码来展示如何使用layout
?还有你正在使用哪个版本的 Qt 构建?
@SilvanoCerza 我已经更新了更多细节。
这里好像用的是自定义的styleSheet,问题可能出在这里,能分享一下吗?
【参考方案1】:
问题出在您的样式表中,只需从 QPushButton:checked
中删除 border:none;
。
setStyleSheet("QPushButton "
" background-color:#292929; "
" color: white;"
" "
""
"QPushButton:hover "
" background-color: #505050; "
" color: white;"
" "
""
"QPushButton:pressed "
" background-color: #F79862;"
" "
""
"QPushButton:checked "
" background-color: #F79862;"
" "
""
"QToolTip "
" color: #404040; "
"");
这是结果:
【讨论】:
以上是关于启用选中时Qt QPushButton会更改大小的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Qt 应用程序中使用样式表更改 QPushButton 图标