【问题标题】:would like not clickable/highlighted icons in listWidget不想在 listWidget 中点击/突出显示图标
【发布时间】:2019-03-07 00:02:10
【问题描述】:

我在 Pyside2 中有 QListWidget,其中填充了图标。我不喜欢鼠标单击时图标呈现灰色阴影的外观。有没有办法禁用此操作?我会附上一张照片。

【问题讨论】:

    标签: python qlistwidget pyside2


    【解决方案1】:

    您必须使用禁用 QStyle::State_Selected 标志的委托:

    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 标志:

    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_())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 2011-08-01
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      相关资源
      最近更新 更多