使用光标在QTreeWidgetItem中选择Text

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用光标在QTreeWidgetItem中选择Text相关的知识,希望对你有一定的参考价值。

我正试图找到一种用光标选择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 + a hotkey,或者研究如何让QTextCursor的东西与QTreeWidgetItem一起工作。

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

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

答案

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

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)

以上是关于使用光标在QTreeWidgetItem中选择Text的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义数据将 QTreeWidgetItem 拖放到 QGraphicsView

QTreeWidgetItem 高亮文本问题

如何将 itemExpanded 与 QTreeWidgetItem 的子类一起使用

如何选择这个文本区域?

使用 QTreeWidgetItem 创建子树

使用 jQuery(兼容 IE6)在 textareas 中捕获“光标位置更改”事件