我正在尝试为我正在研究的Python / Qt应用程序实现一个简单的“第一步”向导。对于Designer来说这很容易,但像往常一样,魔鬼在于细节。 我的问题是'标题'字段对我来说太大了(约占可用屏幕区域的50%)。这是screenshot和there * .ui文件。
我已经查看了所有QWizard / QWizardPage属性,但找不到任何涉及“标题”字段的大小/样式的内容。有没有办法做到这一点(也许使用自定义样式表?)或我运气不好?
答案 0 :(得分:2)
标题标签位于内部QGridLayout
,除非您向页面添加布局(或明确将页面的垂直尺寸政策设置为MinimumExpanding
或Expanding
)要强制包含页面的网格单元格扩展,标题将始终占总高度的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();
希望有所帮助。