QStyleSheet - 为按钮设置边框图像也为其工具提示设置背景图像
QStyleSheet - setting border-image for button also sets background image for its tooltip
我在设置 QToolButton
的 border-image
属性 时遇到问题(稍后还会设置 QPushButton
,但我认为问题会在那里发生也)。我的每个自定义按钮(分别继承自 QToolButton
和 QPushButton
)必须具有 3 种状态 - 不活动、运行 和错误。
无效:
style = 'border-top-right-radius: ' + str(self.cornerRadius) + 'px; border-bottom-right-radius: ' + str(self.cornerRadius) + 'px; border-top-left-radius: ' + str(self.cornerRadius) + 'px; border-bottom-left-radius: ' + str(self.cornerRadius) + 'px; border-image: url("' + self.icon + '"); background: none;'
运行:
style = 'border-top-right-radius: ' + str(self.cornerRadius) + 'px; border-bottom-right-radius: ' + str(self.cornerRadius) + 'px; border-top-left-radius: ' + str(self.cornerRadius) + 'px; border-bottom-left-radius: ' + str(self.cornerRadius) + 'px; border-image: url("' + self.icon + '"); background: rgb(89, 205, 139);'
错误:
style = 'border-top-right-radius: ' + str(self.cornerRadius) + 'px; border-bottom-right-radius: ' + str(self.cornerRadius) + 'px; border-top-left-radius: ' + str(self.cornerRadius) + 'px; border-bottom-left-radius: ' + str(self.cornerRadius) + 'px; border-image: url("' + self.icon + '"); background: rgb(215, 56, 56);'
其中 self.cornerRadius
是一些用于确定按钮圆度的数字(以像素为单位),self.icon
是我从某处检索到的图标。
我在按钮的构造函数中所做的一切(以及其他简单的初始化)是
self.setStyleSheet(style)
按钮的 clicked()
信号连接到同一 class 中的插槽,其中状态发生变化(连同使用 self.setStyleSheet(...)
的样式)相对于系统的新状态是。
由于某些未知原因,我的工具提示收到按钮的样式更改 "belongs to":
我仔细检查了 Qt documentation,但我认为没有任何理由可以解释这种行为。我根本不想更改工具提示的样式。有什么解决办法吗?
我将问题解释为:
How to avoid overlapping the style intended for one widget type with
another?
注意:
- 样式表从父窗口小部件传播到子窗口小部件。
样式表具有您可以为类型显式设置的可见性。
myObj.setStyleSheet("QPushButton {border: 0.05em solid lightgray;}" )
只需将样式表与类型(例如QType { ... }
.
我只处理 C++ Qt,但认为 PyQt 使用相同的样式表系统。
我在设置 QToolButton
的 border-image
属性 时遇到问题(稍后还会设置 QPushButton
,但我认为问题会在那里发生也)。我的每个自定义按钮(分别继承自 QToolButton
和 QPushButton
)必须具有 3 种状态 - 不活动、运行 和错误。
无效:
style = 'border-top-right-radius: ' + str(self.cornerRadius) + 'px; border-bottom-right-radius: ' + str(self.cornerRadius) + 'px; border-top-left-radius: ' + str(self.cornerRadius) + 'px; border-bottom-left-radius: ' + str(self.cornerRadius) + 'px; border-image: url("' + self.icon + '"); background: none;'
运行:
style = 'border-top-right-radius: ' + str(self.cornerRadius) + 'px; border-bottom-right-radius: ' + str(self.cornerRadius) + 'px; border-top-left-radius: ' + str(self.cornerRadius) + 'px; border-bottom-left-radius: ' + str(self.cornerRadius) + 'px; border-image: url("' + self.icon + '"); background: rgb(89, 205, 139);'
错误:
style = 'border-top-right-radius: ' + str(self.cornerRadius) + 'px; border-bottom-right-radius: ' + str(self.cornerRadius) + 'px; border-top-left-radius: ' + str(self.cornerRadius) + 'px; border-bottom-left-radius: ' + str(self.cornerRadius) + 'px; border-image: url("' + self.icon + '"); background: rgb(215, 56, 56);'
其中 self.cornerRadius
是一些用于确定按钮圆度的数字(以像素为单位),self.icon
是我从某处检索到的图标。
我在按钮的构造函数中所做的一切(以及其他简单的初始化)是
self.setStyleSheet(style)
按钮的 clicked()
信号连接到同一 class 中的插槽,其中状态发生变化(连同使用 self.setStyleSheet(...)
的样式)相对于系统的新状态是。
由于某些未知原因,我的工具提示收到按钮的样式更改 "belongs to":
我仔细检查了 Qt documentation,但我认为没有任何理由可以解释这种行为。我根本不想更改工具提示的样式。有什么解决办法吗?
我将问题解释为:
How to avoid overlapping the style intended for one widget type with another?
注意:
- 样式表从父窗口小部件传播到子窗口小部件。
样式表具有您可以为类型显式设置的可见性。
myObj.setStyleSheet("QPushButton {border: 0.05em solid lightgray;}" )
只需将样式表与类型(例如QType { ... }
.
我只处理 C++ Qt,但认为 PyQt 使用相同的样式表系统。