我尝试在QWizard
子类上添加一个frame / widget子类,但是向导页面为空白。我添加了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);
}
第二个向导页面仅显示一个按钮。相框不在那里。框架子类没有我测试过的问题。
答案 0 :(得分:1)
在向导上添加页面的addPage方法可用。 但是页面上的项目/小部件是什么? 因此,如果我想在页面上添加QPushButton或QLabel,则在文档中可以找到代码。 我们将使用addWidget函数创建布局并在布局上添加按钮和标签,最后在tp QWizardPage中设置该布局。 类似地,如果我使用addWidget在布局中添加一个QPushButton,一个QFrame或QWidget并在QWizardPage上设置该布局并将页面添加到QWizard,则该页面将被添加到QWizard中,并且页面上的QPushButton也可见,但是QFrame / QWidget不可见。 / p>
我通过制作QWizardPage子类解决了这个问题,并在其中创建了以QWizardPage子类为父类的QFrame。
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);
}