【问题标题】:Displaying tooltips in PyQT for a QTreeView item在 PyQT 中为 QTreeView 项目显示工具提示
【发布时间】:2014-10-23 04:26:43
【问题描述】:

我已经按照 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()

【问题讨论】:

    标签: pyqt tooltip


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      您必须启用 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
      

      【讨论】:

      • Qt::ToolTip 不是 Qt 中的标志,所以这不起作用。改用 data 函数并返回对 Qt::ToolTipRole 有用的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多