Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt-添加对齐时,自定义小部件将消失_Python_Qt_Pyqt_Qgridlayout - Fatal编程技术网

Python PyQt-添加对齐时,自定义小部件将消失

Python PyQt-添加对齐时,自定义小部件将消失,python,qt,pyqt,qgridlayout,Python,Qt,Pyqt,Qgridlayout,我遇到了一个问题,我正在制作的自定义小部件在添加到QGridLayout时没有指定对齐方式,但当我指定对齐方式时,它就消失了 以下是自定义小部件: class OutlineLabel(QWidget): def __init__(self, text, parent=None): QWidget.__init__(self, parent) self.text = text def paintEvent(self, event=None):

我遇到了一个问题,我正在制作的自定义小部件在添加到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 )

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

如果重新实现
sizeHint()
方法以返回有效的
QSize
,则小部件应显示:

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