【问题标题】:How to make a QPushButton the same dimensions as its background-image?如何使 QPushButton 的尺寸与其背景图像相同?
【发布时间】:2011-08-06 17:05:45
【问题描述】:

我的主窗口上有一个 QPushButton:

practiceButton_ = new QPushButton(this);
practiceButton_->setText(_("Practice"));
practiceButton_->setObjectName("practiceButton");

然后我将一些风格与它联系起来:

qApp->setStyleSheet("QPushButton#practiceButton { background-image: url('myfile.png'); padding:0; margin:0; border:none; }");

背景图片出现了,看起来样式应用成功了,但是按钮比背景图片小。我怎样才能让它调整大小以适应它的背景图片?

如果不能自动完成,是否可以在某处访问应用于按钮的样式,并根据它调整按钮的大小?如果可以的话,我只是想避免对值进行硬编码。

【问题讨论】:

    标签: qt button stylesheet background-image


    【解决方案1】:
        pushButton.resize( QImage( "filename.png" ).size() );
    

    【讨论】:

    • 当然,这不是很有效 - 加载 png 只是为了获得它的大小 - 但剩下的就是留给读者的练习。
    • 如果用户将图像名称更改为 CSS 中的其他名称怎么办?
    • 嗯,我一直在尝试一些事情,但收效甚微。我认为问题在于背景图像和图标之间存在差异。您的解决方案可能是最好的,尽管它确实需要用户输入重复信息。另一个解决方案可能是在这种情况下重新考虑样式表的使用,并使用 QConfig 类型的解决方案(您可以同时使用两种:样式的样式,图标集的配置)。其他解决方案可能是尝试获取按钮的背景图像并获取其大小(一个技巧是解析 qApp->styleSheet() 并执行我上面显示的操作)。
    【解决方案2】:

    好的,我刚刚发现可以在 CSS 本身中设置宽度和高度,这可能是正确的做法:

    QPushButton#practiceButton {
        background-image: url('NavigationButtonUp.png');
        padding:0;
        margin:0;
        border:none;
        width: 194px;
        height: 40px;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      相关资源
      最近更新 更多