QWizard:修改标题字段的高度/尺寸

2 投票
2 回答
1445 浏览
提问于 2025-04-17 00:28

我现在正在为一个Python/Qt的应用程序实现一个简单的“入门向导”。用Designer做这个其实很简单,但像往常一样,细节问题总是让人头疼。
我的问题是,‘标题’字段的大小对我来说太大了(大约占用了屏幕可用空间的50%)。这里有一张截图,还有这个是*.ui文件。

我已经查看了所有QWizard和QWizardPage的属性,但没有找到任何与‘标题’字段的大小或样式相关的内容。有没有什么办法可以解决这个问题(也许可以使用自定义样式表)?还是说我没戏了?

2 个回答

0

如果设置了图像,比如在 QWizard::ModernStyle 中使用的 QWizard::WatermarkPixmap,那么高度就会被锁定,不管你怎么调整都没用。

要解决这个问题,可以使用 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 );

最后,为了让标题框在字体大小改变时能够调整,最简单的方法就是调整图像的高度,然后把它设置到 QWizard::LogoPixmap 中。

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

希望这些能帮到你。

2

标题标签放在一个内部的 QGridLayout 里,除非你给页面添加一个布局(或者明确把页面的垂直大小策略设置为 MinimumExpandingExpanding),否则包含页面的网格单元格不会扩展,标题总是会占据总高度的50%。

撰写回答