QWizard: Изменить высоту / размеры поля заголовка

1

В настоящее время я пытаюсь реализовать простой мастер "Первые шаги" для приложения Python/Qt, над которым я работаю. Это действительно легко сделать с Дизайнером, но, как обычно, черт лежит в деталях. Моя проблема в том, что поле "Название" слишком велико для меня (~ 50% от доступного свойства экрана). Вот скриншот, и там *.ui файл.

Я уже рассмотрел все свойства QWizard/QWizardPage и не нашел ничего, что касалось размера/стиля поля "Название". Есть ли способ сделать это (возможно, используя пользовательскую таблицу стилей?), Или мне не повезло?

Теги:
pyqt
pyside
qwizard
qt4

2 ответа

2
Лучший ответ

Метка заголовка находится во внутреннем QGridLayout и, если вы не добавите макет на страницу (или явно установите политику вертикального размера страницы на MinimumExpanding или Expanding), чтобы заставить ячейку сетки, содержащую страницу, расширяться, заголовок всегда будет возьмите 50% от общей высоты.

  • 0
    Спасибо, установка политики вертикального размера QWizardPage действительно сделала QWizardPage дело! Однако добавить макет не удалось, но пока работает первый способ ... :-)
0

Если установлена QWizard::WatermarkPixmap, например, с помощью QWizard::WatermarkPixmap в QWizard::ModernStyle, высота будет заблокирована независимо от того, что.

Чтобы обойти это, используйте setSideWidget().

В конструкторе для вашего подкласса QWizard

this->setWizardStyle(QWizard::ModernStyle);

//    setPixmap(QWizard::WatermarkPixmap, QPixmap(":/watermark.gif"));
QWidget * sideWidget = new QWidget();
QGridLayout * gridLayout = new QGridLayout();
QLabel * label = new QLabel();
label->setPixmap(QPixmap(":/watermark.gif"));
sideWidget->setLayout(gridLayout);
gridLayout->addWidget(label);
this->setSideWidget(sideWidget);


//this->setSizePolicy(QSizePolicy::MinimumExpanding ,QSizePolicy::MinimumExpanding );

И, наконец, чтобы изменить заголовок в соответствии с изменением шрифта, самый простой взлом - настроить высоту pixmap и установить его в QWizard :: LogoPixmap.

int numOfLinesInTitleBox = 2;
QPixmap p(1,this->fontMetrics().height()*numOfLinesInTitleBox);
p.fill(Qt::transparent);
setPixmap(QWizard::LogoPixmap, p);
this->adjustSize();

Надеюсь, это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню