QStyleSheet - 设置border-image for按钮还为其工具提示设置背景图像

时间:2016-04-20 14:11:45

标签: qt pyqt tooltip qstylesheet qtoolbutton

我在设置border-image的{​​{1}}属性时遇到问题(稍后也会QToolButton,但我认为问题也会出现在那里)。我的每个自定义按钮(分别从QPushButtonQToolButton继承)必须有3种状态 - 无效,运行和错误。

无效:

QPushButton

运行:

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()的样式)关于系统的新内容状态是。

由于某些未知原因,我的工具提示会收到它所属的按钮的样式更改":

enter image description here

我已经仔细检查了Qt documentation,我认为没有理由可以解释这种行为。我根本不想改变工具提示的风格。任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我将问题解释为:

  

如何避免重叠用于一种窗口小部件类型的样式   另一?

请注意:

  • 样式表从父窗口小部件传播到子窗口小部件。
  • 样式表具有可以为类型明确设置的可见性。

    myObj.setStyleSheet("QPushButton {border: 0.05em solid lightgray;}" )

只需用例如类型的样式表附上样式表即可QType { ... }

我只处理C ++ Qt,但认为PyQt使用相同的样式表系统。