2

我无法在 PyQt 中更改 QCombobox 的突出显示颜色。我设法更改了实际输入框的突出显示颜色,但是当下拉菜单出现时它仍然是蓝色的。下图显示了到底发生了什么。调色板方法适用于 Linux,但不适用于 Windows(我目前使用的)。我使用了 PyQt 调色板:

    brush = QtGui.QBrush(QtGui.QColor(168, 168, 168))
    brush.setStyle(QtCore.Qt.SolidPattern)
    palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Highlight, brush)
    self.comboBox_7.setPalette(palette)

在这里,我设法将实际框的突出显示颜色更改为灰色:

图像1

但这里的下拉突出显示仍然是蓝色的:

图2

所有帮助表示赞赏。

4

2 回答 2

3

根据Qt docs,调色板可能并不总是在某些平台上工作:

警告:某些样式并不使用所有绘图的调色板,例如,如果它们使用本机主题引擎。Windows XP、Windows Vista 和 macOS 样式都是这种情况。

Qt 样式表概述建议样式表应该在调色板不起作用的地方工作。我不能在 Linux 以外的任何东西上自己测试这个,但以下似乎可以正常工作:

from PyQt5 import QtWidgets
app = QtWidgets.QApplication([''])
combo = QtWidgets.QComboBox()
combo.addItems('One Two Three'.split())
combo.setStyleSheet('selection-background-color: rgb(168,168,168)')
combo.show()
app.exec_()
于 2017-10-09T14:00:20.767 回答
0

我想补充一点,尽管为 QComboBox 设置“选择背景颜色”似乎很明显,但这个属性实际上属于 QWidget。所以如果你需要明确,你可以做这样的事情combo.setStyleSheet('QWidget{selection-background-color: rgb(168,168,168);}')

于 2021-05-21T01:40:49.383 回答