如何将QColor值转换为十六进制值?

32

我实现了一个在特定条件下打开的QColor对话框。为了获取最终选择后的颜色,我使用了selectedColor()方法,它会返回一个QColor值。当我打印这个值时,它是这样的:

<PyQt4.QtGui.QColor object at 0x01DD7880>

我想要用十六进制表示颜色,例如:#DFDFDF(表示灰色)。如果这不是十六进制,请纠正我。

有没有可以转换的函数?

欢迎任何建议。

2个回答

50
您需要打印selectedColor().name()以输出实际的十六进制颜色值。请参阅QColor文档

非常感谢你,Jason。我没有深入阅读文档。 - vettipayyan
1
这个答案不包含alpha选项。它的结果类似于#RRGGBB,但没有alpha值。 - ufukgun
链接现在已经失效。 - swdev
@ufukgun 这个(从Qt 5.2开始)可以使用:https://doc.qt.io/qt-5/qcolor.html#name-1 - Daniel

3
为了更好地解释,也许会有些混淆,也许会更清晰...(对于Python新手)
color = QColorDialog.getColor(pWidget.textBackgroundColor(), pWidget, 'Get Text Highlighting Color')

上述代码将使用QColorDialog返回一个QColor对象,对于那些不想使用命名颜色如“蓝色”、“红色”、“绿色”等的人来说,这是非常有用的。
fg = color.name()

在这种情况下,我将 QColor 转换为十六进制字符串,以便在样式表中使用。
Widget.setStyleSheet('background-color: ' + bg + ';color: ' + fg)

这是如何在样式表中使用转换后的值。

请注意如何连接多个样式表属性。另外,需要注意的是,有时更改一个属性会取消对其他属性的先前更改。


注意:如果小部件中不存在属性(在本例中为pWidget.testBackGroundColor),则QColorDialog.getColor将失败。您可以使用任何其他现有小部件的颜色属性。 - Mike Sr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接