在PyQT中为QTreeView项显示工具提示

时间:2011-12-30 18:16:56

标签: pyqt tooltip

我已经按照Yasin Uludag的一些有用的在线教程来试验PyQt(或者更确切地说是PySide)来创建一个简单的树视图,但是我在使用工具提示工作时遇到了问题。在以下代码中,工具提示文本显示在控制台上,而不是显示在工具提示窗口中。我见过的所有其他示例都直接在widget项上使用setToolTip,但我不认为我可以在此Model / View方法中直接访问它。我需要在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()

2 个答案:

答案 0 :(得分:1)

就像下面的代码一样。

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

答案 1 :(得分:0)

您必须启用工具提示角色

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