通过PySide设置QTreeWidget中标题的光标

时间:2014-11-24 19:46:15

标签: python python-2.7 qt pyside maya

我正在尝试为用户将鼠标悬停在标题上时设置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()

如果我将光标设置在树窗口小部件本身上,则光标将按预期设置。

3 个答案:

答案 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()

到目前为止,这两种方法的唯一问题似乎是添加小部件将删除更改列大小的功能。