C++,Qt使用在QWizardPage之间传递自定义控件,写一个示例程序
时间: 2024-03-13 14:45:56 浏览: 101
好的,以下是一个示例程序,演示如何在 QWizardPage 之间传递自定义控件。这个示例程序包含两个 QWizardPage,第一个页面包含一个 QLineEdit,第二个页面包含一个 QLabel,当用户在第一个页面中输入文本并点击“下一页”按钮时,第二个页面将显示该文本。
```cpp
#include <QApplication>
#include <QWizard>
#include <QWizardPage>
#include <QLineEdit>
#include <QLabel>
class Page1 : public QWizardPage
{
public:
Page1(QWidget *parent = nullptr)
: QWizardPage(parent)
{
setTitle("Page 1");
setSubTitle("Enter your name");
m_edit = new QLineEdit(this);
registerField("name", m_edit);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(m_edit);
setLayout(layout);
}
private:
QLineEdit *m_edit;
};
class Page2 : public QWizardPage
{
public:
Page2(QWidget *parent = nullptr)
: QWizardPage(parent)
{
setTitle("Page 2");
setSubTitle("Your name is:");
m_label = new QLabel(this);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(m_label);
setLayout(layout);
}
void initializePage() override
{
QString name = field("name").toString();
m_label->setText(name);
}
private:
QLabel *m_label;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWizard wizard;
wizard.addPage(new Page1);
wizard.addPage(new Page2);
wizard.setWindowTitle("Wizard Example");
wizard.show();
return a.exec();
}
```
在这个示例程序中,我们在 Page1 中创建了一个 QLineEdit 控件,并使用 registerField 方法将其与名称为 “name” 的字段关联。在 Page2 中,我们初始化页面时获取 “name” 字段的值,并将其用作 QLabel 的文本。
当用户在第一页中输入文本并点击“下一页”按钮时,第二页将显示该文本。
阅读全文