如何将标签置于 QWizardPage 的中心?
How can I center a label in the center of a QWizardPage?
我有一个标签:
self.label = QtLabel(self)
在 VBoxLayout 内部。
我想设置在 QWizardPage 的中心,无论 window 变成什么大小。我设法让它水平居中:
self.label.setAlignment(QtCore.Qt.AlignCenter)
但我似乎也无法使其垂直居中。我试过了
self.label.setAlignment(QtCore.Qt.AlignVCenter)
和:
self.label.setAlignment(QtCore.Qt.AlignCenter | AlignVCenter)
还有其他一些我现在不记得的事情(如果我记得我会编辑)。阅读 this answer 后,问题似乎与设置最小和最大大小有关。我试过了,将 MinimumHeight 和 MaximumHeight 设置为 200
。这大致使标签居中,但它不适应 window 高度的变化,仅适应其宽度。
如何让这个标签直接在我的页面中间居中?
在两个间隔项之间添加您的标签。您的垂直布局也应该在其父窗口小部件中进行布局,以便它占据父窗口的完整尺寸。
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);
如果您不想设置最小尺寸政策,您可以使用 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);
我有一个标签:
self.label = QtLabel(self)
在 VBoxLayout 内部。
我想设置在 QWizardPage 的中心,无论 window 变成什么大小。我设法让它水平居中:
self.label.setAlignment(QtCore.Qt.AlignCenter)
但我似乎也无法使其垂直居中。我试过了
self.label.setAlignment(QtCore.Qt.AlignVCenter)
和:
self.label.setAlignment(QtCore.Qt.AlignCenter | AlignVCenter)
还有其他一些我现在不记得的事情(如果我记得我会编辑)。阅读 this answer 后,问题似乎与设置最小和最大大小有关。我试过了,将 MinimumHeight 和 MaximumHeight 设置为 200
。这大致使标签居中,但它不适应 window 高度的变化,仅适应其宽度。
如何让这个标签直接在我的页面中间居中?
在两个间隔项之间添加您的标签。您的垂直布局也应该在其父窗口小部件中进行布局,以便它占据父窗口的完整尺寸。
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);
如果您不想设置最小尺寸政策,您可以使用 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);