2014-11-24 2 views
1

사용자가 헤더를 가리키면 QTreeWidget의 헤더에 대한 커서를 설정하려고합니다. 클래스의 헤더를 self.header().setCursor(my_cursor)을 통해 설정하려고 시도했지만 커서를 마우스 위로 가져 가면 커서가 변경되지 않습니다. 나는 이것을 조사하는 방법을 찾기 위해 구글을 조사했지만 지금까지 나는 아무것도 발견하지 못했다. 필자는 PySide 1.2.0 (Maya 2015)과 1.2.2로 테스트를 마쳤습니다.PySide를 통해 QTreeWidget의 헤더 커서 설정

내가 잘못하고있는 것입니까, 아니면 해결 방법이 있습니까? 예상대로

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

나는 나무 위젯 자체에 커서를 설정하는 경우는, 다음 커서를 설정 : 다음 코드의 일부 예입니다.

답변

1

트리의 헤더를 재설정 할 필요가 없습니다.

self.header().viewport().setCursor(QtCore.Qt.WaitCursor) 
:

그냥 기존 헤더의 뷰포트에 커서를 설정

1

해키 방법,하지만 당신은 setCursor() 때문에, QWidgetself.header()를 캐스팅하여이 작업을 수행 할 수는 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() 

그리고 당신은 정말 QtGui.QCursor 객체에 QtCore.Qt.WaitCursor 캐스팅 할 필요가 없습니다.

희망이 유용했습니다.

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

방법 중 하나를 가진 유일한 문제는 지금까지 위젯을 추가하는 열 크기를 변경하는 기능을 제거 할 것 같다.