我想更改QListWidgetItem背景和前景(文本)颜色的alpha。我需要它来实现列表中的搜索,如果与QLineEdit值不匹配,则列表中的项目将灰显。我通过以下方式获得项目背景色(前景相同):
for row in range(self.mylist.count()):
color = self.mylist.item(row).background().color()
print(color.name())
但是总是得到#000000
。已经检查了颜色的alpha(使用color.alpha()
),它始终是255。当我用新的alpha改变颜色并用self.mylist.item(row).setBackground(color)
应用它时,背景变黑。也许我弄错颜色了
最小可复制示例(双击项目):
from PyQt5 import QtWidgets
def getColor(self):
for row in range(mylist.count()):
color = mylist.item(row).background().color()
print(color.name())
print(color.alpha())
app = QtWidgets.QApplication([])
mylist = QtWidgets.QListWidget()
item=QtWidgets.QListWidgetItem()
item.setText("test")
mylist.addItem(item)
mylist.show()
mylist.doubleClicked.connect(getColor)
app.exec_()
背景的QBrush默认情况下QListWidgetItem为空,因此不会使用绘制,也就是说,不会绘制背景色,因此默认颜色是视图的背景色
对于前景,同样的情况也会发生,但它不是不绘制前景,而是使用视图调色板的文本颜色
因此,如果要获取背景色和文本,如果QBrush为空,则必须使用视图调色板:
相关问题 更多 >
编程相关推荐