首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除QWizardPage在QWizard中的额外空间

删除QWizardPage在QWizard中的额外空间
EN

Stack Overflow用户
提问于 2014-07-04 14:21:06
回答 1查看 853关注 0票数 2

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

顶部的蓝色区域是我的头部图像。它应该取所有顶部区域,从(0,0)到(window.width,image.height)。

然后我将这个页面添加到QWizard中:

代码语言:javascript
运行
复制
SetupWizard::SetupWizard(QWidget * parent) : QWizard(parent) {
    welcomePage_ = new SetupWizardWelcomePage(this);
    setPage(WELCOME_PAGE, welcomePage_);
    ...

其结果是:

正如您所看到的,在我的标题图像的左边、右边和顶部都有很小的边距。我试着改变QWizard的造型,设置固定的尺寸和玩几何学-没有任何帮助我。这个间距似乎是在QWizard类中定义的,但我不确定。

那么,我是否能够使用QWizard显示没有间隔的标题呢?还是我必须创建我自己的巫师类?

EN

回答 1

Stack Overflow用户

发布于 2018-04-13 21:47:13

标题的横幅和徽标可以使用

代码语言:javascript
运行
复制
setPixmap(QWizard::BannerPixmap, bannerPixmap);
setPixmap(QWizard::LogoPixmap, logoPixmap);

但是,向导窗口将不再可以水平调整大小。此外,我还想定制更多的标头,因此我向QWizardPage添加了一个自定义标头。这产生了白色边框周围的页面,你也观察到。

可以在QWizard的构造函数中使用此黑客删除边框:

代码语言:javascript
运行
复制
QWidget *flickerWidget = (QWidget *)(children()[0]);
flickerWidget->layout()->setContentsMargins(0, 0, 0, 0);

但这是不实际的,因为上面的按钮上的分隔符也会失去填充,另外,在按钮周围也不会有填充。

我最后做的是:

  • 创建了一个从QDialog继承的新小部件,其中包含了QVBoxLayout布局,我在其中放置了自定义的标头小部件+ QWizard实例。
  • 连接到向导的currentIdChanged(int)信号,并在信号处理程序中更新自定义标题的标题和副标题。
  • 如果按下ESC,向导小部件就会自行销毁,因此我将它的结束()信号路由到对话框的to ()以关闭它:

connect(m_wizard, SIGNAL(finished(int)), this, SLOT(done(int)));

可选的:我还创建了一个QWizardPage的自定义子类,在其中我重写了setTitle和setSubTitle,并且没有调用父类的子类,因此原始标头不可见。在currentIdChanged()处理程序中,我查询页面子类中的标题/字幕,并将其设置为自定义标题。

我还使用了setWizardStyle(QWizard::ClassicStyle),因此向导将有适当的背景颜色/填充,而不使用本机标题/字幕。ModernStyle过去经常在没有设置标题的时候产生奇怪的颜色。

它最终可以工作,但是也许从头开始创建向导会更容易一些。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24576337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档