Отображение подсказок в PyQT для элемента QTreeView - PullRequest
2 голосов
/ 30 декабря 2011

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

1 голос
/ 23 октября 2014

Это работает как код ниже.

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
0 голосов
/ 16 февраля 2012

Вы должны включить роль всплывающей подсказки

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
...