【问题标题】:Selecting Text in a QTreeWidgetItem with the cursor用光标选择 QTreeWidgetItem 中的文本
【发布时间】:2018-05-20 11:22:54
【问题描述】:

我正在尝试找到一种用光标选择 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)

我知道,默认情况下,所有文本都会被选中。但是,因为我启用了编辑,所以禁用编辑会导致文本被取消选择。

为什么要启用和禁用可食用性?
我已将其设置为您只能编辑其中一列的文本。但是,只需打开 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)

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

【问题讨论】:

标签: python python-3.x pyqt pyside


【解决方案1】:

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

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)

【讨论】:

    猜你喜欢
    • 2012-01-24
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2011-02-15
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    相关资源
    最近更新 更多