使用光标选择 QTreeWidgetItem 中的文本

Selecting Text in a QTreeWidgetItem with the cursor

我正在尝试找到一种使用光标选择 QtGui.QTreeWidget.QTreeWidgetItem.text(1) 的方法。

if column == 1:
    # Makes Row editable
    item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)

    # Select item to edit
    Xitem = self.treewidget.editItem(item, column)

    # Makes Row uneditable
    item.setFlags(item.flags() & ~QtCore.Qt.ItemIsEditable)

我知道,默认情况下,所有文本都会被选中。但是,因为我启用了编辑然后禁用了编辑,结果是文本未被选中。

为什么要启用和禁用可编辑性?
我已将其设置为您只能编辑 1 列的文本,其中有几列。但是,只需打开 ItemIsEditable 即可使 所有 列可编辑,我只想要一个特定的列,所以我必须立即再次禁用它。

敲击效果,取消选择所需列中的文本。我仍然可以编辑它,它只是取消了选择。

所以我想ctrl+a全选。 一段时间以来,我一直在努力弄清楚如何做到这一点,但一无所获。

获得我想要的结果的方法是 运行 通过 python 代码的 ctrl+a 热键,或者弄清楚如何让 QTextCursor 东西与 QTreeWidgetItem 一起工作。

editor = QtGui.QTextEdit(self.treewidget)
cursor = editor.textCursor()
cursor.movePosition(QtGui.QTextCursor.Start, QtGui.QTextCursor.KeepAnchor)
editor.setTextCursor(cursor)

我觉得我很接近,但我只是在这里遗漏了一些东西:/

好的,我找到了一个解决方案,虽然我无法锻炼如何select所有文本我能够清理我的脚本以获得期望的结果:

def checkEditFUNC(self, item, column):
    '''
    Allows editing of certain items in the table
    :param item: item name
    :param column: Column number
    '''

    # To allow editing only in column 1 and 2
    if column == 1:
        # Makes Row editable
        item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)
    else:
        item.setFlags(item.flags() & ~QtCore.Qt.ItemIsEditable)