启用选中时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 垂直大小,适合内容吗?

QT开发——QT按钮组件

如何在 Qt 应用程序中使用样式表更改 QPushButton 图标

Flutter Google Map 被选中时会增加标记图标的大小

Qt—QPushButton 使用总结

选中时更改 UICollectionView 单元格的背景和标签颜色