Qt 4:如何设置QWidget的外边框,使其内部小部件不受影响?

Vio*_*ffe 7 css qt stylesheet qtstylesheets

我有一个很奇怪的问题.我有一个QWidgetQHBoxLayout它.布局包含两个QLabels.我想为整个小部件设置边框.我正在使用样式表:

 "padding: 10px;"
 "border-style: solid;"
 "border-width: 3px;"
 "border-radius: 7px;"
Run Code Online (Sandbox Code Playgroud)

但问题是:这种风格适用于两个QLabel并完全打破布局.我只需要外窗口有边框,而不是标签.有任何想法吗?

提前致谢!

RLT*_*RLT 7

样式表将递归工作.如果将样式表应用于应用程序,它将应用于其中的所有窗口小部件.那么您可能必须指定要应用样式表的内容?

逻辑应该是这样的..

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;
 }
Run Code Online (Sandbox Code Playgroud)

  • 我该如何设置样式表?在Qt4.8中,QHBoxLayout类没有名为`setStyleSheet()`的函数.我应该以不同的方式做到这一点,还是你的答案只适用于Qt5? (2认同)

Kam*_*mek 7

使用

.QWidget
{
    // your css rules
}
Run Code Online (Sandbox Code Playgroud)

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

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

#YourWidgetObjectName
{
    // your css rules
}
Run Code Online (Sandbox Code Playgroud)

两种解决方案都不会将规则应用于其他小部件(即使是那些小部件)

  • 没有点的QWidget将指示继承QWidget的ale小部件.使用dot它只包含类QWidget本身的实例.http://doc.qt.nokia.com/4.7/stylesheet-syntax.html#selector-types (5认同)