gpt4 book ai didi

css - 使用 QSS 设置 QAbstractSpinBox 样式时从 QColorDialog 中的 QSpinBoxes 中排除样式

转载 作者:行者123 更新时间:2023-11-28 11:55:15 34 4
gpt4 key购买 nike

我一直在使用 Jorgen-VikingGod 的优秀 Qt-Frameless-Window-DarkStyle 设计带有 QSS 的 Qt 桌面应用程序。作为基线。不幸的是,我们还必须在现场支持相当过时的平板电脑设备(运行 Windows),这意味着我们的一些客户实际上无法使用微小的旋转框按钮。

建议的解决方案是创建大的 +/- 按钮并将它们放在旋转框的相对两侧:

SpinBox with big buttons

但是,这会导致某些 Qt 便利控件出现不良行为,例如 QColorDialog:

Bad QColorDialog

我的QSS代码如下:

QAbstractSpinBox {
height: 18px;
border-radius: 2px;
border: 1px solid rgba(38,38,38,255);
}
QAbstractSpinBox:focus {
border-color: palette(highlight);
}
QAbstractSpinBox::up-button {
subcontrol-origin: border;
subcontrol-position: center right;
width: 18px;
height: 18px;
border-image: url(:/darkstyle/icon_spin_box_button.png);
margin-left: 1px;
}
QAbstractSpinBox::down-button {
subcontrol-origin: border;
subcontrol-position: center left;
width: 18px;
height: 18px;
border-image: url(:/darkstyle/icon_spin_box_button.png);
margin-right: 1px;
}
QAbstractSpinBox::up-button:pressed {
border-image: url(:/darkstyle/icon_spin_box_button_pressed.png);
}
QAbstractSpinBox::down-button:pressed {
border-image: url(:/darkstyle/icon_spin_box_button_pressed.png);
}
QAbstractSpinBox::up-arrow {
image: url(:/darkstyle/icon_spin_box_plus_sign.png);
width: 14px;
height: 14px;
}
QAbstractSpinBox::down-arrow {
image: url(:/darkstyle/icon_spin_box_minus_sign.png);
width: 14px;
height: 14px;
}
QAbstractSpinBox::up-arrow:disabled,
QAbstractSpinBox::up-arrow:off {
image: url(:/darkstyle/icon_spin_box_plus_sign_disabled.png);
width: 14px;
height: 14px;
}
QAbstractSpinBox::down-arrow:disabled,
QAbstractSpinBox::down-arrow:off {
image: url(:/darkstyle/icon_spin_box_minus_sign_disabled.png);
width: 14px;
height: 14px;
}

到目前为止,我已尝试用 .QSpinBox、.QDoubleSpinBox 替换 QAbstractSpinBox 选择器,但这产生了看起来像是默认样式的混合体(向上/向下箭头堆叠在右侧)与我的风格(深色边框、凸起外观等)。

QSS 似乎不支持 CSS3 样式的 :not 选择器,它也没有提供我可以使用的等效项。

综上所述,除了 QColorDialog 中的旋转框外,我是否可以通过任何方式将此样式应用到应用程序中的每个旋转框?或者任何不涉及我在我的应用程序中的每个旋转框实例上通过 ID/objectName 设置此样式的替代方法?查看源代码,似乎 QColorDialog 使用了一个名为 QColSpinBoxQSpinBox 派生类,所以如果我可以排除特定的子类,那么这也足够了。

最佳答案

您可以使用 CSS/QSS 为 QColorDialog 的某些组件设置样式。

enter image description here

所以你可以添加这样的东西:

QColorDialog QSpinBox {
min-width: 3.5em;
text-align: center;
}

向旋转框添加一些额外的空间。我还将 min-widthmin-height 添加到 QColorDialog QColorPicker 中,如下所示:

QColorDialog QColorPicker {
min-width: 20em;
min-height: 20em;
border: solid 1px gray;
}

关于css - 使用 QSS 设置 QAbstractSpinBox 样式时从 QColorDialog 中的 QSpinBoxes 中排除样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54814058/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com