【问题标题】:QWizard: Change height/dimensions of title fieldQWizard:更改标题字段的高度/尺寸
【发布时间】:2011-11-05 08:49:15
【问题描述】:

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

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

【问题讨论】:

    标签: python pyqt qt4 pyside qwizard


    【解决方案1】:

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

    【讨论】:

    • 谢谢,设置QWizardPages 的垂直尺寸策略确实起到了作用!然而,添加布局并没有,但只要第一种方式有效...... :-)
    【解决方案2】:

    如果设置了像素图,比如QWizard::ModernStyle上的QWizard::WatermarkPixmap,无论如何都会锁定高度。

    要解决这个问题,请使用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();
    

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-06-07
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多