我遵循 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()
Run Code Online (Sandbox Code Playgroud)
小智 6
它的工作原理如下代码所示。
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
Run Code Online (Sandbox Code Playgroud)
小智 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
Run Code Online (Sandbox Code Playgroud)