在 PyQT 中显示 QTreeView 项目的工具提示

Ray*_*orn 5 pyqt tooltip

我遵循 Yasin Uludag 的一些有用的在线教程来尝试使用 PyQt(或更确切地说 PySide)来创建一个简单的树视图,但我在使用工具提示时遇到问题。在以下代码中,工具提示文本显示在控制台上而不是工具提示窗口中。我见过的所有其他示例都直接在小部件项上使用 setToolTip,但我认为我无法在这种模型/视图方法中直接访问它。我需要对 QTreeView 本身进行一些初始化吗?

 class TreeModel(QtCore.QAbstractItemModel):

     def __init__(self, root, parent=None):
         super(NXTreeModel, self).__init__(parent)
         self._rootNode = root

     def data(self, index, role):

          node = index.internalPointer()

         if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole:
             return node.name()

         if role == QtCore.Qt.ToolTipRole:
             return node.keys()
Run Code Online (Sandbox Code Playgroud)

小智 6

它的工作原理如下代码所示。

class TreeModel(QAbstractItemModel):
    ...
    def data(self, index, role=Qt.DisplayRole):
        ...
        if role == Qt.ToolTipRole:
            return 'ToolTip'

    def flags(self, index):
        if not index.isValid():
            return Qt.NoItemFlags # 0
        return Qt.ItemIsSelectable # or Qt.ItemIsEnabled
Run Code Online (Sandbox Code Playgroud)


小智 0

您必须启用 ToolTip 角色

class TreeModel(QtCore.QAbstractItemModel):
    ...

    def flags(self, index):
        if not index.isValid():
            return 0
        return QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled |\
               QtCore.Qt.ItemIsSelectable | QtCore.Qt.ToolTip
Run Code Online (Sandbox Code Playgroud)