qt - 使用 QTreeWidget 项目的应用样式表修改默认小部件文本颜色

标签 qt pyqt pyside qtstylesheets qtreewidgetitem

我有一个 QTreeWidget (但是这个问题涉及任何类型的小部件),其中我有一些项目,在某些情况下使用 item.setForeground(0 将其前景色更改为红色,QBrush(QColor("红色")))

稍后他们可以将前景色更改回黑色。但问题是,如果小部件设置了一些样式表,将前景色更改为黑色以外的颜色,我就会遇到麻烦。我的问题是如何将项目的颜色恢复为小部件在给定应用的样式表的情况下用于文本颜色的默认颜色?

例如,如果我应用一个深色样式表,使小部件背景变暗,默认文本颜色变白,首先我可以看到白色项目,然后它们变成红色,然后变成黑色。但我想让它们再次变白。但我不知道如何找到它们应该更改为白色(而不是黑色)的颜色。

我尝试过这个:

1)如果我使用 item.setForeground(QtGui.QBrush()) 我希望使用空的默认画笔,我总是会得到黑色文本

2)如果我查询文本颜色treeWidget.palette().text().color(),无论样式表如何,我总是得到相同的颜色

最佳答案

这个问题并不真正适用于“任何类型的小部件”,因为不能保证设置前景色总是有效。引用 QPalette 的文档:

Warning: Some styles do not use the palette for all drawing, for instance, if they make use of native theme engines. This is the case for both the Windows XP, Windows Vista, and the Mac OS X styles.

但是,如果问题仅限于模型项(例如QTreeWidgetItem),您可以像这样清除当前设置:

item.setData(column, QtCore.Qt.ForegroundRole, None)

允许通过调色板进行更改的平台上,您可以获得如下所示的默认调色板:

palette = QtGui.qApp.style().standardPalette()

然后您应该可以恢复原始值。

关于qt - 使用 QTreeWidget 项目的应用样式表修改默认小部件文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40637466/

相关文章:

python - PyQt4 信号和槽

python - 使用 QWebView 请求的 POST 请求

qt - 在主循环中运行代码

c++ - 继承类的复制构造函数

python - PyQt中如何调用多个Dialog?

python - 如何在布局中组合列(colspan 功能)

python - 选择按钮时如何更改按钮颜色以及我只想使用pyqt4选择一个按钮的每个布局?

python - 如何在运行时轻松地在 PyQt 或 PySide 之间进行选择?

qt - QMake中的变量比较

c++ - 静态 QMap 的冲突声明