【问题标题】:How to add QFrame or QWidget as QWizardPage on QWidzard如何在 QWidzard 上添加 QFrame 或 QWidget 作为 QWizardPage
【发布时间】:2019-01-03 14:17:38
【问题描述】:

我尝试在 QWizard 子类上添加框架/小部件子类,但向导页面为空白。我添加了QMainWindow 子类,它工作正常。

QuickSetupWizard::QuickSetupWizard(QWidget *parent) :
    QWizard(parent),
    ui(new Ui::QuickSetupWizard)
{
   ui->setupUi(this);
   mpMainWindow = new MainWindow(); // QMainWindow subclass
   mpSource = new Source(); // Source is QFrame subclass
   QWizardPage *page = new QWizardPage;
   page->setTitle("Conclusion");
   QLabel *label = new QLabel("You are now successfully registered");
   label->setWordWrap(true);
   QVBoxLayout *layout = new QVBoxLayout;
   layout->addWidget(label);
   layout->addWidget(mpIrigMainWindow);
   page->setLayout(layout);
   addPage(page); // here able to add mainWindow as wizard page

   QWizardPage *page2 = new QWizardPage;
   QVBoxLayout *layout2 = new QVBoxLayout;
   layout2->addWidget(new QPushButton("xyz"));
   layout2->addWidget(mpSource);
   page2->setLayout(layout2);
   addPage(page2);
}

第二个向导页面只显示一个按钮。框架不存在。 Frame子类我测试过没有问题。

【问题讨论】:

    标签: qt qframe qvboxlayout qwizard qwizardpage


    【解决方案1】:

    添加页面向导 addPage 方法可用。 但是页面上的项目/小部件是什么? 所以如果我想在页面上添加 QPushButton 或 QLabel,在文档中,代码是可用的。 我们将使用 addWidget 函数创建布局并在布局上添加按钮和标签,最后设置该布局 tp QWizardPage。 同样,如果我使用 addWidget 添加一个 QPushButton、一个 QFrame 或 QWidget 到布局并在 QWizardPage 上设置该布局并将页面添加到 QWizard,则页面将添加到 QWizard 并且 QPushButton 在页面上也可见,但 QFrame/QWidget 不可见。

    我通过创建 QWizardPage 子类解决了这个问题,并在其中创建了 QFrame,QWizardPage 子类作为父类。

    SourceSelectionPage::SourceSelectionPage(QWidget *parent) :
    QWizardPage(parent),
    ui(new Ui::SourceSelectionPage)
    {
         ui->setupUi(this);
         mpSource = new Source(this); // QFrame get added to page
    }
    /////////////////////////////////////////////
    
    QuickSetupWizard::QuickSetupWizard(QWidget *parent) :
    QWizard(parent),
    ui(new Ui::QuickSetupWizard)
    {
        ui->setupUi(this);
        mpMainWindow = new MainWindow(); // QMainWindow subclass
        QWizardPage *page = new QWizardPage;
        page->setTitle("Conclusion");
        QLabel *label = new QLabel("You are now successfully registered");
        label->setWordWrap(true);
        QVBoxLayout *layout = new QVBoxLayout;
        layout->addWidget(label);
        layout->addWidget(mpIrigMainWindow);
        page->setLayout(layout);
        addPage(page); // here able to add mainWindow as wizard page
    
        SourceSelectionPage *page2 = new SourceSeleCtionPage();
        addPage(page2);
     }
    

    【讨论】:

      猜你喜欢
      • 2021-02-04
      • 2019-02-08
      • 2020-04-15
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 2021-07-05
      • 2014-10-24
      • 2014-11-03
      相关资源
      最近更新 更多