2015-05-12 4 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);