2015-05-12 27 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); 
相關問題