关于Qt向导的使用,在Qt4.8.1以及4Q5.2.1中存在一个简单的例子,实现方式与我的方式有所不同。
在原有的例子中,使用了三个方法,分别定义了三个向导页;然后在main函数中将三个向导页通过addPage的方法加入向导。
如此比较简单实现,但是我觉得不够灵活。最后是将三个向导页分别继承QWizardPage,因为会涉及到每个向导页的一些操作。在这里也是基础。
mywizard.h
- #ifndef MYWIZARD_H
- #define MYWIZARD_H
- #include <QWizard>
- #include "firstwizard.h"
- #include "secondwizard.h"
- #include "thirdwizard.h"
- class MyWizard : public QWizard
- {
- Q_OBJECT
- public:
- explicit MyWizard(QWidget *parent = 0);
- signals:
- private:
- FirstWizard *m_Fw;
- SecondWizard *m_Sw;
- ThirdWizard *m_Tw;
- public:
- enum
- {
- Page_First,
- Page_Second,
- Page_Third
- };
- };
- #endif // MYWIZARD_H
mywizard.cpp
- #include "mywizard.h"
- #include <QTextCodec>
- #include <QIcon>
- MyWizard::MyWizard(QWidget *parent) :
- QWizard(parent),
- m_Fw(new FirstWizard),
- m_Sw(new SecondWizard),
- m_Tw(new ThirdWizard)
- {
- //将向导页加入向导
- setPage(MyWizard::Page_First,m_Fw);
- setPage(MyWizard::Page_Second,m_Sw);
- setPage(MyWizard::Page_Third,m_Tw);
- //去掉帮助按钮
- this->setWindowFlags(windowFlags()&~Qt::WindowContextHelpButtonHint);
- //设置导航样式
- setWizardStyle( QWizard::ModernStyle );
- setWindowTitle( "Qt 向导页面");
- //去掉向导页面按钮
- setOption( QWizard::NoBackButtonOnStartPage );
- setOption( QWizard::NoBackButtonOnLastPage );
- setOption( QWizard::NoCancelButton );
- //---------------------------------------------------
- //在子页面中设置title一下几行才会生效
- QPixmap pix(QSize(500, 78));
- pix.fill(QColor(173,173,173));
- setPixmap(QWizard::BannerPixmap,pix);
- QIcon icon(":/new/images/infor.png");
- setPixmap( QWizard::LogoPixmap,icon.pixmap(64));
- //---------------------------------------------------
- //设置页面主标题的显示格式
- setTitleFormat(Qt::RichText);
- //设置子标题显示格式
- setSubTitleFormat(Qt::RichText);
- //设置两个按钮
- setButtonText(QWizard::NextButton, "下一步>");
- setButtonText(QWizard::BackButton, "<上一步");
- }
firstwizard.h
- #ifndef FIRSTWIZARD_H
- #define FIRSTWIZARD_H
- #include <QWizardPage>
- namespace Ui {
- class FirstWizard;
- }
- class FirstWizard : public QWizardPage
- {
- Q_OBJECT
- public:
- explicit FirstWizard(QWizardPage *parent = 0);
- ~FirstWizard();
- private:
- Ui::FirstWizard *ui;
- };
- QString titleTemplate();
- QString subTitleTemplate();
- #endif // FIRSTWIZARD_H
firstwizard.cpp
- #include "firstwizard.h"
- #include "ui_firstwizard.h"
- #include <QLabel>
- FirstWizard::FirstWizard(QWizardPage *parent) :
- QWizardPage(parent),
- ui(new Ui::FirstWizard)
- {
- ui->setupUi(this);
- setTitle(titleTemplate().arg("Qt软件向导使用"));
- setSubTitle(subTitleTemplate().arg("博客地址:http://blog.csdn.net/jiezhj"));
- }
- FirstWizard::~FirstWizard()
- {
- delete ui;
- }
- QString titleTemplate()
- {
- return QString::fromLatin1("<font color=\"white\" size=\"5\">")+ QString::fromLatin1("%1</font>");
- }
- QString subTitleTemplate()
- {
- return QString::fromLatin1("<font color=\"white\" size=\"3\">")+ QString::fromLatin1("%1</font>");
- }
其余两个页面与第一个页面类似