Qt - 格式QColor用于样式表?

时间:2012-01-03 11:44:57

标签: python qt colors stylesheet

在我的PyQt4程序中,我通过QColorDialog从用户检索QColor 然后我需要将这个QColor格式化为样式表,我目前通过调用...

来实现
QColor.name()

...返回类似'#00ff00'之类的东西,然后进行简单的字符串操作,将其设置为小部件的样式表。例如:

QWidget.setStyleSheet( '* { background-color: '+ QColor.name() + ' }')

稍后在程序中,必须获取窗口小部件的背景颜色(使用.styleSheet()和更简单的字符串操作)并转换为字符串,当eval()编辑时,将构造相同颜色的QColor。

必须将其转换为QColor,因为它稍后在QBrush中使用。 QColor必须转换为一行字符串,因为它被写入文件,并通过eval()从所述文件导入。
 (eval()ed 时的字符串必须将颜色传递给QColor构造函数,因为字符串只有一行)。

最后,我需要类似的东西(尽管不可能这样):

ColorString = str( QtGui.QColorDialog.getColor().name() )
EvalString = "QtGui.QColor(" + ColorString +")"

当然,这个方法不起作用,因为QColor构造函数不接受'#00ff00'这样的格式,这是QColorDialog.name()给出的格式以及QWidget.setStyleSheet()接受的格式。

我怎样才能真正实现这个目标?

是否有将'#00ff00'之类的字符串转换为表示红色,绿色和蓝色的3个整数,然后可以将其发送到QColor构造函数? 谢谢!

注意:
我意识到这种格式'#00ff00'确实涉及这三种颜色的表示,但我不明白'ff'的含义,并且在QColor上调用.red()不会返回由'#00ff00'格式。
很明显,我不明白颜色:)

规格:
- PyQt4
- Python 2.7
- Windows 7

1 个答案:

答案 0 :(得分:3)

尝试QColor.setNamedColor(name)

示例:

string_with_color = '#00ff00'  # gathered somehow

color = QtGui.QColor(0, 0, 0)
color.setNamedColor(string_with_color)
  

但我不明白'ff'是什么意思

在十六进制系统中

ff = 255

修改

从评论中可以看出,解决方案是将Python字符串转换为QString

EvalString = "QtGui.QColor(QtCore.QString(" + ColorString +"))"