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)
给代表,用户不能编辑项目的文本,他们只能从他那里复制
我在 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)
给代表,用户不能编辑项目的文本,他们只能从他那里复制