【问题标题】:Remove extra space around QWizardPage inside QWizard删除 QWizard 内 QWizardPage 周围的额外空间
【发布时间】:2014-08-25 21:55:27
【问题描述】:

我正在 Ubuntu 13.10 下使用 Qt 5.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 显示没有间距的标题吗?还是我必须创建自己的向导类?

【问题讨论】:

  • 你是如何改变 QWizard 的样式的?在“盒子模型”一章中查看doc.qt.digia.com/qq/qq20-qss.html ;)
  • 通过设置 QWizard 样式是指向导样式选项,它由 setWizardStyle(WizardStyle style) 设置,可以是 ClassicStyle、ModernStyle、MacStyle、AeroStyle 和 NStyles。在 QWizard 的样式表中将边距和填充设置为 0 将无济于事。
  • 在我看来,您必须检查两个小部件(父母和儿子)的边距和填充,而不仅仅是 QWizard。
  • 感谢您的想法,但这没有帮助。我写过:“边距:0;填充:0;边框:0;”
  • @serg.v.gusev 你最后解决了吗?

标签: c++ qt qt5 wizard


【解决方案1】:

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

setPixmap(QWizard::BannerPixmap, bannerPixmap);
setPixmap(QWizard::LogoPixmap, logoPixmap);

但是,向导窗口将不再水平调整大小。另外,我想更多地自定义标题,所以我向 QWizardPage 添加了一个自定义标题。这会在您也观察到的页面周围产生白色边框。

可以在 QWizard 的构造函数中使用这个 hack 移除边框:

QWidget *flickerWidget = (QWidget *)(children()[0]);
flickerWidget->layout()->setContentsMargins(0, 0, 0, 0);

但这并不实用,因为按钮上方的分隔符也会丢失填充,而且按钮周围不会有填充。

我最后做的是:

  • 使用 QVBoxLayout 布局创建了一个继承自 QDialog 的新小部件,我在其中放置了我的自定义标题小部件 + QWizard 实例。

  • 连接到向导的 currentIdChanged(int) 信号,并在信号的处理程序中更新了自定义标头的标题和副标题。

  • 如果按下 ESC,向导小部件会自行销毁,因此我将它的 finished() 信号路由到我的对话框的 done() 以关闭它:

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

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

我还使用了setWizardStyle(QWizard::ClassicStyle),因此向导将具有适当的背景颜色/填充,而没有它的本机标题/副标题。未设置标题时,ModernStyle 会产生奇怪的颜色。

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

【讨论】:

    猜你喜欢
    • 2013-08-21
    • 2018-02-18
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 2012-08-14
    相关资源
    最近更新 更多