QTableView에는 가로 및 세로 머리글 간의 교차 부분을 차지하는 corner button이 있습니다. 이것을 클릭하면 테이블의 모든 셀이 선택됩니다. 내가 궁금해하는 점은이 버튼의 텍스트를 설정할 수 있는지, 그렇다면 어떻게 할 것인가?QTableView 모서리 단추의 텍스트를 설정할 수 있습니까?
4
A
답변
3
필자는 PyQt 5.3을 사용한 작업 솔루션을 구현했으며 놀라 울 정도로 적은 코드를 사용했습니다. 내 솔루션은 Qt Center this question에 게시 된 코드를 기반으로합니다.
from PyQt5 import QtWidgets, QtCore
class TableView(QtWidgets.QTableView):
"""QTableView specialization that can e.g. paint the top left corner header.
"""
def __init__(self, nw_heading, parent):
super(TableView, self).__init__(parent)
self.__nw_heading = nw_heading
btn = self.findChild(QtWidgets.QAbstractButton)
btn.setText(self.__nw_heading)
btn.setToolTip('Toggle selecting all table cells')
btn.installEventFilter(self)
opt = QtWidgets.QStyleOptionHeader()
opt.text = btn.text()
s = QtCore.QSize(btn.style().sizeFromContents(
QtWidgets.QStyle.CT_HeaderSection, opt, QtCore.QSize(), btn).
expandedTo(QtWidgets.QApplication.globalStrut()))
if s.isValid():
self.verticalHeader().setMinimumWidth(s.width())
def eventFilter(self, obj, event):
if event.type() != QtCore.QEvent.Paint or not isinstance(
obj, QtWidgets.QAbstractButton):
return False
# Paint by hand (borrowed from QTableCornerButton)
opt = QtWidgets.QStyleOptionHeader()
opt.initFrom(obj)
styleState = QtWidgets.QStyle.State_None
if obj.isEnabled():
styleState |= QtWidgets.QStyle.State_Enabled
if obj.isActiveWindow():
styleState |= QtWidgets.QStyle.State_Active
if obj.isDown():
styleState |= QtWidgets.QStyle.State_Sunken
opt.state = styleState
opt.rect = obj.rect()
# This line is the only difference to QTableCornerButton
opt.text = obj.text()
opt.position = QtWidgets.QStyleOptionHeader.OnlyOneSection
painter = QtWidgets.QStylePainter(obj)
painter.drawControl(QtWidgets.QStyle.CE_Header, opt)
return True
+0
QTableView의 cornerButton에 대한 QtWidgets.QAbstractButton의 모든 메소드와 함수에 대한 액세스를 엽니 다. –
관련 문제
- 1. wpf에서 단추의 내용을 스타일로 설정할 수 있습니까?
- 2. 데이터 글보기에 정보가 있는지에 따라 단추의 텍스트를 굵게 설정할 수 있습니까?
- 3. 이미지 alt 텍스트를 동적으로 설정할 수 있습니까?
- 4. 스레드 내에서 textview 텍스트를 설정할 수 있습니까?
- 5. TextBox 텍스트를 선언적으로 설정할 수 있습니까?
- 6. 2 줄에 걸쳐있는 단추의 텍스트를 어떻게 멈출 수 있습니까? 그래서
- 7. UILabel 텍스트를 설정할 수 없습니다
- 8. NSTextView에서 텍스트를 설정할 수 없습니다.
- 9. 날짜를 사용하여 단추의 텍스트를 변경하십시오.
- 10. 텍스트를 올바르게 설정할 수 없습니다.
- 11. 텍스트를 TextView로 설정할 수 없습니다.
- 12. 프로그래밍 방식으로 목록보기 내에서 단추의 표시 여부를 설정할 수 없습니다.
- 13. JScript를 사용하여 단추의 텍스트를 설정하는 방법은 무엇입니까?
- 14. 자바 RCP - 동적으로 SWT 레이블 컨트롤에 텍스트를 설정할 수 없습니다
- 15. 어떻게 텍스트를 설정할 수 있습니다 viewpageindicator 3
- 16. QTableView 행에 색상을 설정하십시오.
- 17. C# : winforms 단추의 텍스트를 리소스에 바인딩하는 방법
- 18. jw 플레이어 6에서 워터 마크로 텍스트를 설정할 수 있습니까?
- 19. 확인란을 선택하면 텍스트를 클릭 할 수있게 설정할 수 있습니까?
- 20. 응용 프로그램 사용자가 UIActivityViewController와 공유하도록 선택한 텍스트를 설정할 수 있습니까?
- 21. Lockscreen 알림 텍스트를 ScheduledTaskAgent에서 어떻게 설정할 수 있습니까?
- 22. div를 가로로 채우기 위해 텍스트를 어떻게 설정할 수 있습니까?
- 23. TextView에 그래픽 레이아웃 미리보기 전용 텍스트를 설정할 수 있습니까?
- 24. 스크롤 할 필요가 없도록 TextView에 얼마만큼의 텍스트를 설정할 수 있습니까?
- 25. 필수 속성에서 동적 텍스트를 ErrorMessage로 설정할 수 있습니까?
- 26. 어떻게 id를 몰라도 EditText에 텍스트를 설정할 수 있습니까?
- 27. 어떻게 다른 TextView에서 TextView의 텍스트를 설정할 수 있습니까?
- 28. android sdk의 facebook 대화 상자에서 피드 텍스트를 설정할 수 있습니까?
- 29. Wix : 어떻게하면 VerifyReadyDlg에 표시 할 텍스트를 런타임에 설정할 수 있습니까?
- 30. 확인 기능 버튼의 텍스트를 무시하거나 설정할 수 있습니까?
참조 [QT 중심이 질문] (http://www.qtcentre.org/threads/6252-QTableWidget-NW-corner-header-item). – thuga