我正在Ubuntu13.10下使用QT5.2.1编写一些向导。我有标题图像,并希望显示在几乎所有的向导页面顶部。因此,我打开了QtDesigned,创建了新的QWizardPage表单,结果看起来(概念上):

顶部的蓝色区域是我的头部图像。它应该取所有顶部区域,从(0,0)到(window.width,image.height)。
然后我将这个页面添加到QWizard中:
SetupWizard::SetupWizard(QWidget * parent) : QWizard(parent) {
welcomePage_ = new SetupWizardWelcomePage(this);
setPage(WELCOME_PAGE, welcomePage_);
...其结果是:

正如您所看到的,在我的标题图像的左边、右边和顶部都有很小的边距。我试着改变QWizard的造型,设置固定的尺寸和玩几何学-没有任何帮助我。这个间距似乎是在QWizard类中定义的,但我不确定。
那么,我是否能够使用QWizard显示没有间隔的标题呢?还是我必须创建我自己的巫师类?
发布于 2018-04-13 21:47:13
标题的横幅和徽标可以使用
setPixmap(QWizard::BannerPixmap, bannerPixmap);
setPixmap(QWizard::LogoPixmap, logoPixmap);但是,向导窗口将不再可以水平调整大小。此外,我还想定制更多的标头,因此我向QWizardPage添加了一个自定义标头。这产生了白色边框周围的页面,你也观察到。
可以在QWizard的构造函数中使用此黑客删除边框:
QWidget *flickerWidget = (QWidget *)(children()[0]);
flickerWidget->layout()->setContentsMargins(0, 0, 0, 0);但这是不实际的,因为上面的按钮上的分隔符也会失去填充,另外,在按钮周围也不会有填充。
我最后做的是:
connect(m_wizard, SIGNAL(finished(int)), this, SLOT(done(int)));
可选的:我还创建了一个QWizardPage的自定义子类,在其中我重写了setTitle和setSubTitle,并且没有调用父类的子类,因此原始标头不可见。在currentIdChanged()处理程序中,我查询页面子类中的标题/字幕,并将其设置为自定义标题。
我还使用了setWizardStyle(QWizard::ClassicStyle),因此向导将有适当的背景颜色/填充,而不使用本机标题/字幕。ModernStyle过去经常在没有设置标题的时候产生奇怪的颜色。
它最终可以工作,但是也许从头开始创建向导会更容易一些。
https://stackoverflow.com/questions/24576337
复制相似问题