【问题标题】:Setting border-radius for QSpinBox/QComboBox has unexpected side effect on up/down controls为 QSpinBox/QComboBox 设置边框半径对上/下控件有意想不到的副作用
【发布时间】:2012-05-22 13:25:19
【问题描述】:

我正在使用 PyQt4 来创建一个包含多个 QLineEdit 和 QSpinBox 输入的接口。我想给两者一个漂亮的圆形外观,但这在旋转框的情况下会出现问题。

样式表的相关部分如下所示:

QDialog {
    background-color: #444;
}

QLabel, QLineEdit, {
    background-color: #eee;
    border-radius: 8px;
}

QSpinBox{
    background-color: #eee;
}

给出一个如下所示的界面:

现在,当我为 QSpinBox 和 QComboBox 包含 border-radius(即使值为 0)时,我得到了这个

请注意箭头如何从 Windows XP/vista 主题变为普通的默认外观。

为什么会发生这种情况,我该如何预防?

我想看到的是,旋转框和组合框的主要形状像行编辑一样。我没有尝试设置自定义箭头图像,因为我更喜欢使用本机默认值。或者这真的是我最好/唯一的选择吗?谢谢!

【问题讨论】:

  • JNK 会很生你的气
  • 啊,对 :D 好吧,我想 Arthur C. Clarke 有更多的理由生我们俩的气。
  • 你最好在他发现之前赶紧改掉!

标签: css qt4 pyqt4 qcombobox qspinbox


【解决方案1】:

通过这个QStyle,您会想到将小部件的样式更改为QWindowsStyleQMacStyleQMotifStyle。此外,如果您设置特定小部件的样式表,则只有您的值 set 将被更新,其余属性是来自其 parent 小部件的 inherited。因此,在设置 stylesheet 时,请尝试像上面所说的那样指定 widget style

【讨论】:

  • 感谢您的回答和链接。现在我决定无论如何都要制作自己的图像,但这可能会在未来有所帮助。
【解决方案2】:

当您更改小部件的样式表时,它会使用 QCssStyle 设置样式。它将每个未设置样式的子控件退回到默认样式。您必须设置整个控件的样式以获得所需的外观。它不会混合

【讨论】:

  • 谢谢。但是为什么背景色没有将按钮恢复为默认值呢?
  • 因为背景颜色不会改变形状
猜你喜欢
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多