不想在 listWidget 中点击/突出显示图标 [英] would like not clickable/highlighted icons in listWidget
本文介绍了不想在 listWidget 中点击/突出显示图标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在 Pyside2 中有 QListWidget,它有图标填充它.我不喜欢当鼠标点击它们时图标呈现灰色的外观.有没有办法禁用此操作?我会附上一张图片.
I have QListWidget in Pyside2 that has icons populating it. I dont like the icons taking on a shaded grey look when the mouse clicks them. Is there a way to disable this action? I will include a picture.
推荐答案
您必须使用禁用 QStyle::State_Selected
标志的委托:
You have to use a delegate that disables the QStyle::State_Selected
flag:
from PySide2 import QtCore, QtGui, QtWidgets
class StyledItemDelegate(QtWidgets.QStyledItemDelegate):
def initStyleOption(self, option, index):
option.state &= ~QtWidgets.QStyle.State_Selected
super(StyledItemDelegate, self).initStyleOption(option, index)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QListWidget()
delegate = StyledItemDelegate(w) # <---
w.setItemDelegate(delegate) # <---
w.setViewMode(QtWidgets.QListView.IconMode)
w.setIconSize(QtCore.QSize(128, 128))
w.setResizeMode(QtWidgets.QListView.Adjust)
for _ in range(20):
it = QtWidgets.QListWidgetItem()
it.setIcon(QtGui.QIcon("light.png"))
w.addItem(it)
w.resize(640, 480)
w.show()
sys.exit(app.exec_())
另一个选项是禁用 QListWidgetItem 的 Qt::ItemIsSelectable
标志:
Another option is to disable the Qt::ItemIsSelectable
flag of the QListWidgetItem:
from PySide2 import QtCore, QtGui, QtWidgets
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyle("fusion")
w = QtWidgets.QListWidget()
w.setViewMode(QtWidgets.QListView.IconMode)
w.setIconSize(QtCore.QSize(128, 128))
w.setResizeMode(QtWidgets.QListView.Adjust)
for i in range(20):
it = QtWidgets.QListWidgetItem(str(i))
it.setIcon(QtGui.QIcon("light.png"))
it.setFlags(it.flags() &~ QtCore.Qt.ItemIsSelectable) # <---
w.addItem(it)
w.resize(640, 480)
w.show()
sys.exit(app.exec_())
这篇关于不想在 listWidget 中点击/突出显示图标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文