【问题标题】:Qt 4: How to set outer border for QWidget so that its inner widgets are unaffected?Qt 4:如何为 QWidget 设置外边框,使其内部小部件不受影响?
【发布时间】:2011-12-14 16:47:18
【问题描述】:

我有一个很奇怪的问题。我有一个QWidget,上面有QHBoxLayout。布局包含两个QLabels。 我想为整个小部件设置边框。我正在使用样式表:

 "padding: 10px;"
 "border-style: solid;"
 "border-width: 3px;"
 "border-radius: 7px;"

但问题是:这种风格适用于两个 QLabels 并且完全破坏了布局。我只需要外部窗口有边框,而不是标签。 有什么想法吗?

提前致谢!

【问题讨论】:

    标签: css qt stylesheet qtstylesheets


    【解决方案1】:

    使用

    .QWidget
    {
        // your css rules
    }
    

    .QWidget 将仅将 CSS 应用于完全是 QWidget 且不继承 QWidget 的类

    您也可以使用对象名称选择器

    #YourWidgetObjectName
    {
        // your css rules
    }
    

    这两种解决方案都不会将规则应用于其他小部件(甚至是内部的小部件)

    【讨论】:

    【解决方案2】:

    样式表将递归工作。如果您将样式表应用于应用程序,它将应用于其中的所有小部件。所以您可能必须指定要应用的样式表?

    逻辑应该是这样的..

    QHBoxLayout#layoutbox {
         background-color: red;
         border-style: outset;
         border-width: 2px;
         border-radius: 10px;
         border-color: beige;
         font: bold 14px;
         min-width: 10em;
         padding: 6px;
     }
    

    【讨论】:

    • 如何设置样式表?在 Qt4.8 中,QHBoxLayout 类没有名为setStyleSheet() 的函数。我应该以不同的方式来做,还是你的答案只适用于 Qt5 ?
    猜你喜欢
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多