QListWidgetItem 的文本无法高亮/选中

QListWidgetItem's text can't be highlighted / selected

我在 RHEL6 上使用 qt5.2.1

除了使用 QTextBrowser 或重写一个使用 QLabel 而不是像 QListWidget 那样的 QListWidgetItem 的新小部件,我如何才能单独制作文本 select可以使用鼠标指针吗?

例如,在像 vim 这样的文本编辑器中,您可以在某些文本上拖动鼠标按钮并释放鼠标,然后您可以在不同的编辑器或终端中单击鼠标中键并将其粘贴.我知道如何通过 QClipboard 做到这一点,但问题是文本一开始就无法 select。我仍然希望整行单击一次即可 select,这就是我使用 QListWidget 的原因,但如果我按住并拖动鼠标,我希望能够 select个人文字。

TL;DR: QLabel 具有函数 setTextInteractionFlags,您可以将其设为鼠标 selectable,我如何为 QListWidgetItem 执行此操作?

QListWidget中可以使用setEditTriggers(QtWidgets.QAbstractItemView.SelectedClicked) 对于所有项目 setFlags(QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEnabled|QtCore.Qt.ItemIsEditable),然后在第一次单击时选择该项目,

秒洞文

部分文字可以鼠标选中

编辑 24.03.2015

为了防止用户以这种方式编辑子类 QstyledItemDelegate(我在 PyQt5 中做到了)

class MyDelegate(QtWidgets.QStyledItemDelegate):
    def __init__(self):
        QtWidgets.QStyledItemDelegate.__init__(self) 

    def setModelData(self,editor,model,index):
        pass # no changes are written to model

并将此委托用于列表小部件:

self.delegate = MyDelegate()
self.listWidget.setItemDelegate(self.delegate)

用户可以删除或更改项目文本,编辑完成后显示原文

编辑 25.03.15:添加

def eventFilter(self,editor,event):
    if event.type() == QtCore.QEvent.KeyPress and event.key() not in (QtCore.Qt.Key_Control, QtCore.Qt.Key_C):
        return True
    return QtWidgets.QStyledItemDelegate.eventFilter(self, editor, event)

给代表,用户不能编辑项目的文本,他们只能从他那里复制