使用光标在QTreeWidgetItem中选择Text

时间:2017-12-06 14:28:26

标签: python python-3.x pyqt pyside

我正试图找到一种用光标选择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 +一个选定的全部。 我一直试图弄清楚如何做一段时间,但我没有在哪里。

获得我想要的结果的方法是通过python代码运行ctrl +一个热键,或者研究如何让QTextCursor使用QTreeWidgetItem。

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

我觉得我很亲近,但我在这里错过了一些东西:/

1 个答案:

答案 0 :(得分:0)

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

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)