qwizard.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:8k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QWIZARD_H
  38. #define QWIZARD_H
  39. #include <QtGui/qdialog.h>
  40. QT_BEGIN_HEADER
  41. QT_BEGIN_NAMESPACE
  42. QT_MODULE(Gui)
  43. #ifndef QT_NO_WIZARD
  44. class QAbstractButton;
  45. class QWizardPage;
  46. class QWizardPrivate;
  47. class Q_GUI_EXPORT QWizard : public QDialog
  48. {
  49.     Q_OBJECT
  50.     Q_ENUMS(WizardStyle WizardOption)
  51.     Q_FLAGS(WizardOptions)
  52.     Q_PROPERTY(WizardStyle wizardStyle READ wizardStyle WRITE setWizardStyle)
  53.     Q_PROPERTY(WizardOptions options READ options WRITE setOptions)
  54.     Q_PROPERTY(Qt::TextFormat titleFormat READ titleFormat WRITE setTitleFormat)
  55.     Q_PROPERTY(Qt::TextFormat subTitleFormat READ subTitleFormat WRITE setSubTitleFormat)
  56.     Q_PROPERTY(int startId READ startId WRITE setStartId)
  57.     Q_PROPERTY(int currentId READ currentId NOTIFY currentIdChanged)
  58. public:
  59.     enum WizardButton {
  60.         BackButton,
  61.         NextButton,
  62.         CommitButton,
  63.         FinishButton,
  64.         CancelButton,
  65.         HelpButton,
  66.         CustomButton1,
  67.         CustomButton2,
  68.         CustomButton3,
  69.         Stretch,
  70.         NoButton = -1,
  71.         NStandardButtons = 6,
  72.         NButtons = 9
  73.     };
  74.     enum WizardPixmap {
  75.         WatermarkPixmap,
  76.         LogoPixmap,
  77.         BannerPixmap,
  78.         BackgroundPixmap,
  79.         NPixmaps
  80.     };
  81.     enum WizardStyle {
  82.         ClassicStyle,
  83.         ModernStyle,
  84.         MacStyle,
  85.         AeroStyle,
  86.         NStyles
  87.     };
  88.     enum WizardOption {
  89.         IndependentPages                = 0x00000001,
  90.         IgnoreSubTitles                 = 0x00000002,
  91.         ExtendedWatermarkPixmap         = 0x00000004,
  92.         NoDefaultButton                 = 0x00000008,
  93.         NoBackButtonOnStartPage         = 0x00000010,
  94.         NoBackButtonOnLastPage          = 0x00000020,
  95.         DisabledBackButtonOnLastPage    = 0x00000040,
  96.         HaveNextButtonOnLastPage        = 0x00000080,
  97.         HaveFinishButtonOnEarlyPages    = 0x00000100,
  98.         NoCancelButton                  = 0x00000200,
  99.         CancelButtonOnLeft              = 0x00000400,
  100.         HaveHelpButton                  = 0x00000800,
  101.         HelpButtonOnRight               = 0x00001000,
  102.         HaveCustomButton1               = 0x00002000,
  103.         HaveCustomButton2               = 0x00004000,
  104.         HaveCustomButton3               = 0x00008000
  105.     };
  106.     Q_DECLARE_FLAGS(WizardOptions, WizardOption)
  107.     QWizard(QWidget *parent = 0, Qt::WindowFlags flags = 0);
  108.     ~QWizard();
  109.     int addPage(QWizardPage *page);
  110.     void setPage(int id, QWizardPage *page);
  111.     QWizardPage *page(int id) const;
  112.     bool hasVisitedPage(int id) const;
  113.     QList<int> visitedPages() const;    // ### visitedIds()?
  114.     void setStartId(int id);
  115.     int startId() const;
  116.     QWizardPage *currentPage() const;
  117.     int currentId() const;
  118.     virtual bool validateCurrentPage();
  119.     virtual int nextId() const;
  120.     void setField(const QString &name, const QVariant &value);
  121.     QVariant field(const QString &name) const;
  122.     void setWizardStyle(WizardStyle style);
  123.     WizardStyle wizardStyle() const;
  124.     void setOption(WizardOption option, bool on = true);
  125.     bool testOption(WizardOption option) const;
  126.     void setOptions(WizardOptions options);
  127.     WizardOptions options() const;
  128.     void setButtonText(WizardButton which, const QString &text);
  129.     QString buttonText(WizardButton which) const;
  130.     void setButtonLayout(const QList<WizardButton> &layout);
  131.     void setButton(WizardButton which, QAbstractButton *button);
  132.     QAbstractButton *button(WizardButton which) const;
  133.     void setTitleFormat(Qt::TextFormat format);
  134.     Qt::TextFormat titleFormat() const;
  135.     void setSubTitleFormat(Qt::TextFormat format);
  136.     Qt::TextFormat subTitleFormat() const;
  137.     void setPixmap(WizardPixmap which, const QPixmap &pixmap);
  138.     QPixmap pixmap(WizardPixmap which) const;
  139.     void setDefaultProperty(const char *className, const char *property,
  140.                             const char *changedSignal);
  141.     void setVisible(bool visible);
  142.     QSize sizeHint() const;
  143. Q_SIGNALS:
  144.     void currentIdChanged(int id);
  145.     void helpRequested();
  146.     void customButtonClicked(int which);
  147. public Q_SLOTS:
  148.     void back();
  149.     void next();
  150.     void restart();
  151. protected:
  152.     bool event(QEvent *event);
  153.     void resizeEvent(QResizeEvent *event);
  154.     void paintEvent(QPaintEvent *event);
  155. #if defined(Q_WS_WIN)
  156.     bool winEvent(MSG * message, long * result);
  157. #endif
  158.     void done(int result);
  159.     virtual void initializePage(int id);
  160.     virtual void cleanupPage(int id);
  161. private:
  162.     Q_DISABLE_COPY(QWizard)
  163.     Q_DECLARE_PRIVATE(QWizard)
  164.     Q_PRIVATE_SLOT(d_func(), void _q_emitCustomButtonClicked())
  165.     Q_PRIVATE_SLOT(d_func(), void _q_updateButtonStates())
  166.     friend class QWizardPage;
  167. };
  168. Q_DECLARE_OPERATORS_FOR_FLAGS(QWizard::WizardOptions)
  169. class QWizardPagePrivate;
  170. class Q_GUI_EXPORT QWizardPage : public QWidget
  171. {
  172.     Q_OBJECT
  173.     Q_PROPERTY(QString title READ title WRITE setTitle)
  174.     Q_PROPERTY(QString subTitle READ subTitle WRITE setSubTitle)
  175. public:
  176.     QWizardPage(QWidget *parent = 0);
  177.     void setTitle(const QString &title);
  178.     QString title() const;
  179.     void setSubTitle(const QString &subTitle);
  180.     QString subTitle() const;
  181.     void setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap);
  182.     QPixmap pixmap(QWizard::WizardPixmap which) const;
  183.     void setFinalPage(bool finalPage);
  184.     bool isFinalPage() const;
  185.     void setCommitPage(bool commitPage);
  186.     bool isCommitPage() const;
  187.     void setButtonText(QWizard::WizardButton which, const QString &text);
  188.     QString buttonText(QWizard::WizardButton which) const;
  189.     virtual void initializePage();
  190.     virtual void cleanupPage();
  191.     virtual bool validatePage();
  192.     virtual bool isComplete() const;
  193.     virtual int nextId() const;
  194. Q_SIGNALS:
  195.     void completeChanged();
  196. protected:
  197.     void setField(const QString &name, const QVariant &value);
  198.     QVariant field(const QString &name) const;
  199.     void registerField(const QString &name, QWidget *widget, const char *property = 0,
  200.                        const char *changedSignal = 0);
  201.     QWizard *wizard() const;
  202. private:
  203.     Q_DISABLE_COPY(QWizardPage)
  204.     Q_DECLARE_PRIVATE(QWizardPage)
  205.     Q_PRIVATE_SLOT(d_func(), void _q_maybeEmitCompleteChanged())
  206.     Q_PRIVATE_SLOT(d_func(), void _q_updateCachedCompleteState())
  207.     friend class QWizard;
  208.     friend class QWizardPrivate;
  209. };
  210. QT_END_NAMESPACE
  211. QT_END_HEADER
  212. #endif // QT_NO_WIZARD
  213. #endif // QWIZARD_H