我正在尝试为用户将鼠标悬停在标题上时设置QTreeWidget标题的光标。我已尝试通过self.header().setCursor( my_cursor )
在类中设置标题,但到目前为止,当我将鼠标悬停在标题上时,光标不会改变。我搜索了谷歌,试图找出如何做到这一点,但到目前为止,我没有找到任何结果。我已经使用PySide 1.2.0(在Maya 2015中)和1.2.2进行了测试。
我做错了,还是有解决方法?以下是代码的一些示例:
import sys
from PySide import QtCore, QtGui
class Tree( QtGui.QTreeWidget ):
def __init__(self, parent = None):
super(Tree, self).__init__(parent = parent)
self.header().setCursor(QtGui.QCursor( QtCore.Qt.WaitCursor))
widget = Tree()
widget.show()
如果我将光标设置在树窗口小部件本身上,则光标将按预期设置。
答案 0 :(得分:1)
Hacky方式,但您可以通过将self.header()
转换为QWidget
来实现此目的,因为setCursor()
是QWidget
类的方法。
import sys
from PySide import QtCore, QtGui
class Tree(QtGui.QTreeWidget):
def __init__(self, parent=None):
super(Tree, self).__init__(parent=parent)
QtGui.QWidget(self.header()).setCursor(QtCore.Qt.WaitCursor)
widget = Tree()
widget.show()
并且您不必将QtCore.Qt.WaitCursor
投射到QtGui.QCursor
对象。
希望这很有用。
答案 1 :(得分:1)
无需重置树的标题。
只需将光标设置在现有标题的视口上:
self.header().viewport().setCursor(QtCore.Qt.WaitCursor)
答案 2 :(得分:0)
添加到kartikg3的答案。这将允许使用标题的全长。
import sys
from PySide import QtCore, QtGui
class Tree(QtGui.QTreeWidget):
def __init__(self, parent=None):
super(Tree, self).__init__(parent=parent)
header_widget = QtGui.QWidget()
header_widget.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor))
header_layout = QtGui.QHBoxLayout()
header_layout.addWidget(header_widget)
self.header().setLayout(header_layout)
widget = Tree()
widget.show()
到目前为止,这两种方法的唯一问题似乎是添加小部件将删除更改列大小的功能。