【问题标题】:PyQt - Custom Widget Disappears when added with AlignmentPyQt - 添加对齐时自定义小部件消失
【发布时间】:2013-12-09 03:58:42
【问题描述】:

我遇到了一个问题,我正在制作的自定义小部件在添加到 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 类中设置一些信息才能正确使用对齐方式吗?

【问题讨论】:

    标签: python qt pyqt qgridlayout


    【解决方案1】:

    大小提示可能有问题(您的小部件为空)。

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

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

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 2018-08-14
      • 2015-11-19
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      相关资源
      最近更新 更多