gpt4 book ai didi

python - PyQt - 使用对齐添加时自定义小部件消失

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:15 28 4
gpt4 key购买 nike

我遇到一个问题,我正在制作的自定义小部件在添加到 QGridLayout 而不指定对齐方式时显示得很好,但是当我指定对齐方式时它会消失。

这是自定义小部件:

class OutlineLabel(QWidget):
def __init__(self, text, parent=None):
QWidget.__init__(self, parent)
self.text = text

def paintEvent(self, event=None):
painter = QPainter(self)
path = QPainterPath()
pen = QPen();
font = QFont("Helvetica", 14, 99, False)
brush = QBrush(QtCore.Qt.white)
pen.setWidth(1);
pen.setColor(QtCore.Qt.black);
painter.setFont(font);
painter.setPen(pen);
painter.setBrush(brush)
path.addText(0, 20, font, self.text);
painter.drawPath(path);

这是一个可以正常显示的示例:

app = QApplication(sys.argv)
wnd = QWidget()
wnd.resize(400,400)
grid = QGridLayout()
test = OutlineLabel("hello")
grid.addWidget(test, 0, 0)
wnd.setLayout(grid)
wnd.show()
sys.exit(app.exec_())

但是如果我将其更改为以下内容,则不再显示:

app = QApplication(sys.argv)
wnd = QWidget()
wnd.resize(400,400)
grid = QGridLayout()
test = OutlineLabel("hello")
grid.addWidget(test, 0, 0, QtCore.Qt.AlignHCenter)
wnd.setLayout(grid)
wnd.show()
sys.exit(app.exec_())

是否需要在 OutlineLabel 类中设置一些信息才能正确使用对齐方式?

最佳答案

这可能是尺寸提示的问题(您的小部件为空)。

如果您重新实现 sizeHint() 方法以返回有效的 QSize,您的小部件应该会出现:

def sizeHint( self ):
return QSize( 200, 200 )

关于python - PyQt - 使用对齐添加时自定义小部件消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20462895/

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