1

我目前正在尝试为我正在开发的 Python/Qt 应用程序实现一个简单的“第一步”向导。使用 Designer 很容易做到这一点,但像往常一样,魔鬼在于细节。我的问题是“标题”字段对我来说太大了(大约 50% 的可用屏幕空间)。这是一个屏幕截图还有*.ui 文件。

我已经查看了所有 QWizard/QWizardPage 属性,但找不到任何与“标题”字段的大小/样式相关的内容。有什么方法可以做到这一点(也许使用自定义样式表?)还是我不走运?

4

2 回答 2

2

标题标签位于内部QGridLayout,除非您向页面添加布局(或将页面的垂直大小策略显式设置为MinimumExpandingExpanding)以强制包含页面的网格单元格展开,否则标题将始终占 50%的总高度。

于 2011-08-28T18:25:46.580 回答
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();

希望有帮助。

于 2017-07-20T14:49:13.117 回答