gpt4 book ai didi

qt - 是否可以设置 QTableView 角按钮的文本?

转载 作者:行者123 更新时间:2023-12-01 01:01:44 24 4
gpt4 key购买 nike

QTableView 有一个 corner button ,占据水平和垂直标题之间的交点。单击此按钮将选择表中的所有单元格。我想知道是否可以设置此按钮的文本,如果可以,如何设置?

最佳答案

我已经用 PyQt 5.3 实现了一个有效的解决方案,而且它只用了很少的代码。我的解决方案基于 this question 中发布的代码在 Qt 中心。

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

关于qt - 是否可以设置 QTableView 角按钮的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22635867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com