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

时间:2011-08-28 06:01:10

标签: python pyqt qt4 pyside qwizard

我正在尝试为我正在研究的Python / Qt应用程序实现一个简单的“第一步”向导。对于Designer来说这很容易,但像往常一样,魔鬼在于细节。 我的问题是'标题'字段对我来说太大了(约占可用屏幕区域的50%)。这是screenshotthere * .ui文件。

我已经查看了所有QWizard / QWizardPage属性,但找不到任何涉及“标题”字段的大小/样式的内容。有没有办法做到这一点(也许使用自定义样式表?)或我运气不好?

2 个答案:

答案 0 :(得分:2)

标题标签位于内部QGridLayout,除非您向页面添加布局(或明确将页面的垂直尺寸政策设置为MinimumExpandingExpanding)要强制包含页面的网格单元格扩展,标题将始终占总高度的50%。

答案 1 :(得分:0)

如果设置了像素图,就像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 );

最后,为了使标题框适应字体大小的变化,最简单的方法就是调整像素图的高度并在QWizard :: LogoPixmap中设置它。

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

希望有所帮助。