我有个标签:
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。这大致是以标签为中心,但它不适应窗口高度的变化,只适应其宽度的变化。
我怎样才能把这个标签直接放在页面的中间?
发布于 2015-05-12 00:43:23
在两个间隔项之间添加标签。您的垂直布局也应该部署在它的父小部件中,因此它需要父部件的全部大小。
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);发布于 2015-05-12 02:14:37
如果不想设置最小大小策略,可以使用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);https://stackoverflow.com/questions/30179655
复制相似问题