首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt格式的QColor将用于样式表吗?

Qt格式的QColor将用于样式表吗?
EN

Stack Overflow用户
提问于 2012-01-03 11:44:57
回答 1查看 6.9K关注 0票数 6

在我的PyQt4程序中,我通过QColorDialog从用户那里检索一个QColor。

然后,我需要格式化这个QColor以在样式表中使用,我现在通过调用.

代码语言:javascript
复制
QColor.name()

..。它返回'#00ff00‘这样的内容,然后进行简单的字符串操作,将其设置为小部件的样式表。例:

代码语言:javascript
复制
QWidget.setStyleSheet( '* { background-color: '+ QColor.name() + ' }')

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

它必须转换为QColor,因为它稍后在QBrush中使用。必须将QColor转换为单行字符串,因为它是写到文件中的,并通过eval()从该文件导入。

(()ed时的字符串必须将颜色传递给QColor构造函数,因为该字符串只有一行)。

最后,我需要类似的东西(虽然以这种方式不可能),比如:

代码语言:javascript
复制
ColorString = str( QtGui.QColorDialog.getColor().name() )
EvalString = "QtGui.QColor(" + ColorString +")"

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

我怎样才能真正做到这一点呢?

是否存在将'#00ff00‘这样的字符串转换为3个表示红色、绿色和蓝色的整数,然后将其发送给QColor构造函数?

谢谢!

注意:

我意识到这样的格式'#00ff00‘确实涉及这三种颜色的表示,但我不明白'ff’是什么意思,在QColor上调用QColor()并不返回‘00ff00’格式建议的整数。

很明显,我不懂颜色:)

规格:

  • PyQt4
  • Python 2.7
  • Windows 7
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-03 12:07:29

试试QColor.setNamedColor(姓名)

示例:

代码语言:javascript
复制
string_with_color = '#00ff00'  # gathered somehow

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

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

十六进制系统中的ff = 255

编辑

如注释所示,解决方案是将Python转换为QString

代码语言:javascript
复制
EvalString = "QtGui.QColor(QtCore.QString(" + ColorString +"))"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8711799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档