2015-05-12 26 views
1

我有一个标签:如何将一个标签放在QWizardPage的中心?

self.label = QtLabel(self) 

这是一个VBoxLayout内。

我想设置在QWizardPage的中心,无论窗口大小如何。我设法让它水平居中:

self.label.setAlignment(QtCore.Qt.AlignCenter) 

但我似乎无法让它垂直居中。我试过

self.label.setAlignment(QtCore.Qt.AlignVCenter) 

和:

self.label.setAlignment(QtCore.Qt.AlignCenter | AlignVCenter) 

和一对夫妇的,我不记得在这个时候其他的事情(如果我这样做,我会编辑)。在阅读this answer之后,似乎问题与设置最小和最大尺寸有关。我试过了,将MinimumHeight和MaximumHeight设置为200。这大致以标签为中心,但它不适应窗户高度的变化,仅适用于其宽度。

如何将此标签直接置于页面中间?

+0

是标签您VBoxLayout内的唯一窗口小部件? –

+0

@LahiruChandima是的,这是正确的。 – Seth

回答

1

在两个间隔项目之间添加您的标签。你的垂直布局也应该放在它的父窗口小部件中,这样它就可以获得父窗口的全部大小。

QSpacerItem* verticalSpacer1 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); 
label = new QLabel(Form); 
label->setAlignment(Qt::AlignCenter); 
QSpacerItem* verticalSpacer2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); 

verticalLayout->addItem(verticalSpacer1); 
verticalLayout->addWidget(label); 
verticalLayout->addItem(verticalSpacer2); 
1

如果你不想设置,你可以使用QWidgets做一些这样的最小尺寸政策:

QWizardPage.__init__(self) 

    intro_text = "Some text that needs to be centered..." 

    self.introVBox = QVBoxLayout(self) 

    self.sizer_top = QWidget() 
    self.sizer_top.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) 
    self.sizer_bottom = QWidget() 
    self.sizer_bottom.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) 

    self.label = QLabel(self) 
    self.label.setText(intro_text) 
    self.label.setAlignment(QtCore.Qt.AlignCenter) 
    self.introVBox.addWidget(self.sizer_top) 
    self.introVBox.addWidget(self.label) 
    self.introVBox.addWidget(self.sizer_bottom) 
    self.setLayout(self.introVBox); 
相关问题