要让QPushButton的文本保持居中,可以使用QStyle类中的方法来实现。

首先,可以使用setIconSize方法设置按钮的图标尺寸,确保图标的大小适合按钮的大小。

然后,可以重写QPushButton的paintEvent方法,在这个方法中使用QStyle类的drawItemText方法来绘制按钮的文本。通过设置QStyleOptionButton类的rect属性,可以确保文本在按钮的中心位置绘制。

以下是一个示例代码:

from PyQt5.QtWidgets import QApplication, QPushButton, QStyleOptionButton, QStyle
from PyQt5.QtGui import QIcon, QPainter

class MyButton(QPushButton):
    def __init__(self, parent=None):
        super(MyButton, self).__init__(parent)
        self.setIcon(QIcon('icon.png'))
        self.setIconSize(self.size() - self.contentsMargins().bottomRight() - self.contentsMargins().topLeft())

    def paintEvent(self, event):
        super(MyButton, self).paintEvent(event)
        painter = QPainter(self)
        option = QStyleOptionButton()
        self.initStyleOption(option)
        option.rect = self.contentsRect()
        option.iconSize = self.iconSize()
        QApplication.style().drawItemText(painter, option.rect, Qt.AlignCenter, self.palette(), self.isEnabled(), self.text())

app = QApplication([])
button = MyButton('Button')
button.show()
app.exec_()

在这个示例中,我们创建了一个自定义的QPushButton子类MyButton,重写了其paintEvent方法。在paintEvent方法中,我们首先调用父类的paintEvent方法来绘制按钮的背景和图标,然后使用QStyle类的drawItemText方法来绘制按钮的文本。

通过设置QStyleOptionButton类的rect属性为按钮的contentsRect,确保文本在按钮的中心位置绘制。最后,调用QApplication.style()方法获取当前的样式,并使用这个样式来绘制按钮的文本。

这样,就可以实现让QPushButton的文本保持居中的效果。

QPushButton 设置图标后,如何居中显示文本

原文地址: https://www.cveoy.top/t/topic/l1WN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录