В настоящее время я пытаюсь реализовать простой мастер "Первые шаги" для приложения Python/Qt, над которым я работаю. Это действительно легко сделать с Дизайнером, но, как обычно, черт лежит в деталях. Моя проблема в том, что поле "Название" слишком велико для меня (~ 50% от доступного свойства экрана). Вот скриншот, и там *.ui файл.
Я уже рассмотрел все свойства QWizard/QWizardPage и не нашел ничего, что касалось размера/стиля поля "Название". Есть ли способ сделать это (возможно, используя пользовательскую таблицу стилей?), Или мне не повезло?
Метка заголовка находится во внутреннем QGridLayout
и, если вы не добавите макет на страницу (или явно установите политику вертикального размера страницы на MinimumExpanding
или Expanding
), чтобы заставить ячейку сетки, содержащую страницу, расширяться, заголовок всегда будет возьмите 50% от общей высоты.
Если установлена 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();
Надеюсь, это поможет.
QWizardPage
действительно сделалаQWizardPage
дело! Однако добавить макет не удалось, но пока работает первый способ ... :-)