2011-12-30 91 views
2

我跟隨Yasin Uludag嘗試用PyQt(或者PySide)創建一個簡單的樹視圖的一些有用的在線教程,但我在使工具提示工作時遇到問題。在以下代碼中,工具提示文本顯示在控制檯上而不是工具提示窗口中。我所見過的所有其他示例都直接在widget項上使用setToolTip,但我不認爲我可以直接訪問這種模型/視圖方法。 QTreeView本身需要做些初始化嗎?在PyQT中顯示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() 

回答

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 
+1

Qt :: ToolTip不是Qt中的標誌,所以這不起作用。使用數據函數,並返回對Qt :: ToolTipRole有用的東西。 – 2013-05-29 13:56:07

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