2011-12-30 1 views
2

Я воспользовался некоторыми полезными онлайн-учебниками Ясина Улудага, чтобы поэкспериментировать с PyQt (или, скорее, PySide), чтобы создать простое древовидное представление, но у меня возникают проблемы с получением всплывающих подсказок. В следующем коде текст подсказки отображается на консоли, а не в окне всплывающей подсказки. Все остальные примеры, которые я видел, используют setToolTip непосредственно в элементе виджетов, но я не думаю, что у меня есть прямой доступ к этому в этом подходе Model/View. Есть ли какая-то инициализация, которую мне нужно сделать для самого 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

Вы должны включить 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 
+1

Qt :: ToolTip не является флагом в Qt, поэтому это не сработает. Вместо этого используйте функцию данных и верните что-то полезное для Qt :: ToolTipRole. –

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 
Смежные вопросы