diff --git a/doc/global/manifest-meta.qdocconf b/doc/global/manifest-meta.qdocconf index 84b70dbe2b2..27cf547734c 100644 --- a/doc/global/manifest-meta.qdocconf +++ b/doc/global/manifest-meta.qdocconf @@ -121,7 +121,6 @@ manifestmeta.ios.names = "QtCore/Contiguous Cache Example" \ "QtWidgets/Easing Curves Example" \ "QtWidgets/Move Blocks Example" \ "QtWidgets/States Example" \ - "QtWidgets/Class Wizard Example" \ "QtWidgets/Find Files Example" \ "QtWidgets/License Wizard Example" \ "QtWidgets/Standard Dialogs Example" \ diff --git a/doc/src/images/classwizard-flow.png b/doc/src/images/classwizard-flow.png deleted file mode 100644 index ad9446c4309..00000000000 Binary files a/doc/src/images/classwizard-flow.png and /dev/null differ diff --git a/doc/src/images/classwizard.png b/doc/src/images/classwizard.png deleted file mode 100644 index ea740bd2138..00000000000 Binary files a/doc/src/images/classwizard.png and /dev/null differ diff --git a/examples/widgets/dialogs/CMakeLists.txt b/examples/widgets/dialogs/CMakeLists.txt index c40dc94ccb6..b16cbc7f440 100644 --- a/examples/widgets/dialogs/CMakeLists.txt +++ b/examples/widgets/dialogs/CMakeLists.txt @@ -2,11 +2,10 @@ # SPDX-License-Identifier: BSD-3-Clause if(QT_FEATURE_wizard) - qt_internal_add_example(classwizard) qt_internal_add_example(trivialwizard) + if(Qt6::PrintSupport) + qt_internal_add_example(licensewizard) + endif() endif() qt_internal_add_example(standarddialogs) qt_internal_add_example(tabdialog) -if(QT_FEATURE_wizard AND TARGET Qt6::PrintSupport) - qt_internal_add_example(licensewizard) -endif() diff --git a/examples/widgets/dialogs/dialogs.pro b/examples/widgets/dialogs/dialogs.pro index 14dbec67b6a..2493688297c 100644 --- a/examples/widgets/dialogs/dialogs.pro +++ b/examples/widgets/dialogs/dialogs.pro @@ -1,8 +1,7 @@ QT_FOR_CONFIG += widgets TEMPLATE = subdirs -SUBDIRS = classwizard \ - licensewizard \ +SUBDIRS = licensewizard \ standarddialogs \ tabdialog \ trivialwizard diff --git a/examples/widgets/dialogs/licensewizard/licensewizard.cpp b/examples/widgets/dialogs/licensewizard/licensewizard.cpp index 05888ac67d4..67fa46bf07c 100644 --- a/examples/widgets/dialogs/licensewizard/licensewizard.cpp +++ b/examples/widgets/dialogs/licensewizard/licensewizard.cpp @@ -288,9 +288,12 @@ void ConclusionPage::initializePage() "You can use this software for 30 days and make one " "backup, but you are not allowed to distribute it."); } else if (wizard()->hasVisitedPage(LicenseWizard::Page_Details)) { +//! [accessField] + const QString emailAddress = field("details.email").toString(); licenseText = tr("First-Time License Agreement: " "You can use this software subject to the license " - "you will receive by email."); + "you will receive by email sent to %1.").arg(emailAddress); +//! [accessField] } else { licenseText = tr("Upgrade License Agreement: " "This software is licensed under the terms of your " diff --git a/examples/widgets/dialogs/trivialwizard/trivialwizard.cpp b/examples/widgets/dialogs/trivialwizard/trivialwizard.cpp index 83de13f0466..b9321338a47 100644 --- a/examples/widgets/dialogs/trivialwizard/trivialwizard.cpp +++ b/examples/widgets/dialogs/trivialwizard/trivialwizard.cpp @@ -86,10 +86,12 @@ int main(int argc, char *argv[]) app.installTranslator(translator); #endif +//! [linearAddPage] QWizard wizard; wizard.addPage(createIntroPage()); wizard.addPage(createRegistrationPage()); wizard.addPage(createConclusionPage()); +//! [linearAddPage] wizard.setWindowTitle("Trivial Wizard"); wizard.show(); diff --git a/examples/widgets/doc/src/classwizard.qdoc b/examples/widgets/doc/src/classwizard.qdoc deleted file mode 100644 index 8494a3c7fbe..00000000000 --- a/examples/widgets/doc/src/classwizard.qdoc +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only - -/*! - \example dialogs/classwizard - \title Class Wizard Example - \ingroup examples-dialogs - - \brief The Class Wizard example shows how to implement linear - wizards using QWizard. - - \image classwizard.png Screenshot of the Class Wizard example - - Most wizards have a linear structure, with page 1 followed by - page 2 and so on until the last page. Some wizards are more - complex in that they allow different traversal paths based on the - information provided by the user. The - \l{dialogs/licensewizard}{License Wizard} example shows how to - create such wizards. - - The Class Wizard example consists of the following classes: - - \list - \li \c ClassWizard inherits QWizard and provides a - three-step wizard that generates the skeleton of a C++ class - based on the user's input. - \li \c IntroPage, \c ClassInfoPage, \c CodeStylePage, \c - OutputFilesPage, and \c ConclusionPage are QWizardPage - subclasses that implement the wizard pages. - \endlist - - \section1 ClassWizard Class Definition - - \image classwizard-flow.png The Class Wizard pages - - We will see how to subclass QWizard to implement our own wizard. - The concrete wizard class is called \c ClassWizard and provides - five pages: - - \list - \li The first page is an introduction page, telling the user what - the wizard is going to do. - \li The second page asks for a class name and a base class, and - allows the user to specify whether the class should have a \c - Q_OBJECT macro and what constructors it should provide. - \li The third page allows the user to set some options related to the code - style, such as the macro used to protect the header file from - multiple inclusion (e.g., \c MYDIALOG_H). - \li The fourth page allows the user to specify the names of the - output files. - \li The fifth page is a conclusion page. - \endlist - - Although the program is just an example, if you press \uicontrol Finish - (\uicontrol Done on \macos), actual C++ source files will actually be - generated. - - \section1 The ClassWizard Class - - Here's the \c ClassWizard definition: - - \snippet dialogs/classwizard/classwizard.h 0 - - The class reimplements QDialog's \l{QDialog::}{accept()} slot. - This slot is called when the user clicks \uicontrol{Finish}. - - Here's the constructor: - - \snippet dialogs/classwizard/classwizard.cpp 1 - - We instantiate the five pages and insert them into the wizard - using QWizard::addPage(). The order in which they are inserted - is also the order in which they will be shown later on. - - We call QWizard::setPixmap() to set the banner and the - background pixmaps for all pages. The banner is used as a - background for the page header when the wizard's style is - \l{QWizard::}{ModernStyle}; the background is used as the - dialog's background in \l{QWizard::}{MacStyle}. (See \l{Elements - of a Wizard Page} for more information.) - - \snippet dialogs/classwizard/classwizard.cpp 3 - \snippet dialogs/classwizard/classwizard.cpp 4 - \dots - \snippet dialogs/classwizard/classwizard.cpp 5 - \snippet dialogs/classwizard/classwizard.cpp 6 - - If the user clicks \uicontrol Finish, we extract the information from - the various pages using QWizard::field() and generate the files. - The code is long and tedious (and has barely anything to do with - noble art of designing wizards), so most of it is skipped here. - See the actual example in the Qt distribution for the details if - you're curious. - - \section1 The IntroPage Class - - The pages are defined in \c classwizard.h and implemented in \c - classwizard.cpp, together with \c ClassWizard. We will start with - the easiest page: - - \snippet dialogs/classwizard/classwizard.h 1 - \codeline - \snippet dialogs/classwizard/classwizard.cpp 7 - - A page inherits from QWizardPage. We set a - \l{QWizardPage::}{title} and a - \l{QWizard::WatermarkPixmap}{watermark pixmap}. By not setting - any \l{QWizardPage::}{subTitle}, we ensure that no header is - displayed for this page. (On Windows, it is customary for wizards - to display a watermark pixmap on the first and last pages, and to - have a header on the other pages.) - - Then we create a QLabel and add it to a layout. - - \section1 The ClassInfoPage Class - - The second page is defined and implemented as follows: - - \snippet dialogs/classwizard/classwizard.h 2 - \codeline - \snippet dialogs/classwizard/classwizard.cpp 9 - \dots - \snippet dialogs/classwizard/classwizard.cpp 12 - \dots - \snippet dialogs/classwizard/classwizard.cpp 13 - - First, we set the page's \l{QWizardPage::}{title}, - \l{QWizardPage::}{subTitle}, and \l{QWizard::LogoPixmap}{logo - pixmap}. The logo pixmap is displayed in the page's header in - \l{QWizard::}{ClassicStyle} and \l{QWizard::}{ModernStyle}. - - Then we create the child widgets, create \l{Registering and Using - Fields}{wizard fields} associated with them, and put them into - layouts. The \c className field is created with an asterisk (\c - *) next to its name. This makes it a \l{mandatory fields}{mandatory field}, that - is, a field that must be filled before the user can press the - \uicontrol Next button (\uicontrol Continue on \macos). The fields' values - can be accessed from any other page using QWizardPage::field(), - or from the wizard code using QWizard::field(). - - \section1 The CodeStylePage Class - - The third page is defined and implemented as follows: - - \snippet dialogs/classwizard/classwizard.h 3 - \codeline - \snippet dialogs/classwizard/classwizard.cpp 14 - \dots - \snippet dialogs/classwizard/classwizard.cpp 15 - \codeline - \snippet dialogs/classwizard/classwizard.cpp 16 - - The code in the constructor is very similar to what we did for \c - ClassInfoPage, so we skipped most of it. - - The \c initializePage() function is what makes this class - interesting. It is reimplemented from QWizardPage and is used to - initialize some of the page's fields with values from the - previous page (namely, \c className and \c baseClass). For - example, if the class name on page 2 is \c SuperDuperWidget, the - default macro name on page 3 is \c SUPERDUPERWIDGET_H. - - The \c OutputFilesPage and \c ConclusionPage classes are very - similar to \c CodeStylePage, so we won't review them here. - - \sa QWizard, {License Wizard Example}, {Trivial Wizard Example} -*/ diff --git a/examples/widgets/doc/src/licensewizard.qdoc b/examples/widgets/doc/src/licensewizard.qdoc index 2770a38ae29..036572d6795 100644 --- a/examples/widgets/doc/src/licensewizard.qdoc +++ b/examples/widgets/doc/src/licensewizard.qdoc @@ -13,7 +13,7 @@ Most wizards have a linear structure, with page 1 followed by page 2 and so on until the last page. The - \l{dialogs/classwizard}{Class Wizard} example shows how to create + \l{dialogs/trivialwizard}{Trivial Wizard} example shows how to create such wizards. Some wizards are more complex in that they allow different @@ -191,5 +191,5 @@ option and disconnect the \c printButtonClicked() slot. \endlist - \sa QWizard, {Class Wizard Example}, {Trivial Wizard Example} + \sa QWizard, {Trivial Wizard Example} */ diff --git a/examples/widgets/doc/src/trivialwizard.qdoc b/examples/widgets/doc/src/trivialwizard.qdoc index f62e9174013..9ce22ec3834 100644 --- a/examples/widgets/doc/src/trivialwizard.qdoc +++ b/examples/widgets/doc/src/trivialwizard.qdoc @@ -55,5 +55,5 @@ \snippet dialogs/trivialwizard/trivialwizard.cpp 10 - \sa QWizard, {Class Wizard Example}, {License Wizard Example} + \sa QWizard, {License Wizard Example} */ diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index d6287717d97..27c0a12f71d 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -1761,9 +1761,8 @@ void QWizardAntiFlickerWidget::paintEvent(QPaintEvent *) \section1 A Trivial Example The following example illustrates how to create wizard pages and - add them to a wizard. For more advanced examples, see - \l{dialogs/classwizard}{Class Wizard} and \l{dialogs/licensewizard}{License - Wizard}. + add them to a wizard. For more advanced examples, see the + \l{dialogs/licensewizard}{License Wizard}. \snippet dialogs/trivialwizard/trivialwizard.cpp 1 \snippet dialogs/trivialwizard/trivialwizard.cpp 3 @@ -1892,12 +1891,7 @@ void QWizardAntiFlickerWidget::paintEvent(QPaintEvent *) To register a field, call QWizardPage::registerField() field. For example: - \snippet dialogs/classwizard/classwizard.cpp 8 - \dots - \snippet dialogs/classwizard/classwizard.cpp 10 - \snippet dialogs/classwizard/classwizard.cpp 11 - \dots - \snippet dialogs/classwizard/classwizard.cpp 13 + \snippet dialogs/licensewizard/licensewizard.cpp 21 The above code registers three fields, \c className, \c baseClass, and \c qobjectMacro, which are associated with three @@ -1908,11 +1902,11 @@ void QWizardAntiFlickerWidget::paintEvent(QPaintEvent *) The fields of any page are accessible from any other page. For example: - \snippet dialogs/classwizard/classwizard.cpp 17 + \snippet dialogs/licensewizard/licensewizard.cpp 27 Here, we call QWizardPage::field() to access the contents of the - \c className field (which was defined in the \c ClassInfoPage) - and use it to initialize the \c OutputFilePage. The field's + \c details.email field (which was defined in the \c DetailsPage) + and use it to initialize the \c ConclusionPage. The field's contents is returned as a QVariant. When we create a field using QWizardPage::registerField(), we @@ -1955,15 +1949,13 @@ void QWizardAntiFlickerWidget::paintEvent(QPaintEvent *) \section1 Creating Linear Wizards Most wizards have a linear structure, with page 1 followed by - page 2 and so on until the last page. The \l{dialogs/classwizard}{Class - Wizard} example is such a wizard. With QWizard, linear wizards + page 2 and so on until the last page. The \l{dialogs/trivialwizard} + {Trivial Wizard} example is such a wizard. With QWizard, linear wizards are created by instantiating the \l{QWizardPage}s and inserting them using addPage(). By default, the pages are shown in the order in which they were added. For example: - \snippet dialogs/classwizard/classwizard.cpp 0 - \dots - \snippet dialogs/classwizard/classwizard.cpp 2 + \snippet dialogs/trivialwizard/trivialwizard.cpp linearAddPage When a page is about to be shown, QWizard calls initializePage() (which in turn calls QWizardPage::initializePage()) to fill the @@ -2033,7 +2025,7 @@ void QWizardAntiFlickerWidget::paintEvent(QPaintEvent *) \snippet dialogs/licensewizard/licensewizard.cpp 27 - \sa QWizardPage, {Class Wizard Example}, {License Wizard Example} + \sa QWizardPage, {Trivial Wizard Example}, {License Wizard Example} */ /*! @@ -3407,7 +3399,7 @@ int QWizard::nextId() const using registerField() and can be accessed at any time using field() and setField(). - \sa QWizard, {Class Wizard Example}, {License Wizard Example} + \sa QWizard, {Trivial Wizard Example}, {License Wizard Example} */ /*! @@ -3550,7 +3542,7 @@ QPixmap QWizardPage::pixmap(QWizard::WizardPixmap which) const fields are properly initialized based on fields from previous pages. For example: - \snippet dialogs/classwizard/classwizard.cpp 17 + \snippet dialogs/licensewizard/licensewizard.cpp 27 The default implementation does nothing. @@ -3854,7 +3846,7 @@ void QWizardPage::setField(const QString &name, const QVariant &value) Example: - \snippet dialogs/classwizard/classwizard.cpp 17 + \snippet dialogs/licensewizard/licensewizard.cpp accessField \sa QWizard::field(), setField(), registerField() */ diff --git a/examples/widgets/dialogs/classwizard/CMakeLists.txt b/tests/manual/examples/widgets/dialogs/classwizard/CMakeLists.txt similarity index 100% rename from examples/widgets/dialogs/classwizard/CMakeLists.txt rename to tests/manual/examples/widgets/dialogs/classwizard/CMakeLists.txt diff --git a/examples/widgets/dialogs/classwizard/classwizard.cpp b/tests/manual/examples/widgets/dialogs/classwizard/classwizard.cpp similarity index 100% rename from examples/widgets/dialogs/classwizard/classwizard.cpp rename to tests/manual/examples/widgets/dialogs/classwizard/classwizard.cpp diff --git a/examples/widgets/dialogs/classwizard/classwizard.h b/tests/manual/examples/widgets/dialogs/classwizard/classwizard.h similarity index 100% rename from examples/widgets/dialogs/classwizard/classwizard.h rename to tests/manual/examples/widgets/dialogs/classwizard/classwizard.h diff --git a/examples/widgets/dialogs/classwizard/classwizard.pro b/tests/manual/examples/widgets/dialogs/classwizard/classwizard.pro similarity index 100% rename from examples/widgets/dialogs/classwizard/classwizard.pro rename to tests/manual/examples/widgets/dialogs/classwizard/classwizard.pro diff --git a/examples/widgets/dialogs/classwizard/classwizard.qrc b/tests/manual/examples/widgets/dialogs/classwizard/classwizard.qrc similarity index 100% rename from examples/widgets/dialogs/classwizard/classwizard.qrc rename to tests/manual/examples/widgets/dialogs/classwizard/classwizard.qrc diff --git a/examples/widgets/dialogs/classwizard/images/background.png b/tests/manual/examples/widgets/dialogs/classwizard/images/background.png similarity index 100% rename from examples/widgets/dialogs/classwizard/images/background.png rename to tests/manual/examples/widgets/dialogs/classwizard/images/background.png diff --git a/examples/widgets/dialogs/classwizard/images/banner.png b/tests/manual/examples/widgets/dialogs/classwizard/images/banner.png similarity index 100% rename from examples/widgets/dialogs/classwizard/images/banner.png rename to tests/manual/examples/widgets/dialogs/classwizard/images/banner.png diff --git a/examples/widgets/dialogs/classwizard/images/logo1.png b/tests/manual/examples/widgets/dialogs/classwizard/images/logo1.png similarity index 100% rename from examples/widgets/dialogs/classwizard/images/logo1.png rename to tests/manual/examples/widgets/dialogs/classwizard/images/logo1.png diff --git a/examples/widgets/dialogs/classwizard/images/logo2.png b/tests/manual/examples/widgets/dialogs/classwizard/images/logo2.png similarity index 100% rename from examples/widgets/dialogs/classwizard/images/logo2.png rename to tests/manual/examples/widgets/dialogs/classwizard/images/logo2.png diff --git a/examples/widgets/dialogs/classwizard/images/logo3.png b/tests/manual/examples/widgets/dialogs/classwizard/images/logo3.png similarity index 100% rename from examples/widgets/dialogs/classwizard/images/logo3.png rename to tests/manual/examples/widgets/dialogs/classwizard/images/logo3.png diff --git a/examples/widgets/dialogs/classwizard/images/watermark1.png b/tests/manual/examples/widgets/dialogs/classwizard/images/watermark1.png similarity index 100% rename from examples/widgets/dialogs/classwizard/images/watermark1.png rename to tests/manual/examples/widgets/dialogs/classwizard/images/watermark1.png diff --git a/examples/widgets/dialogs/classwizard/images/watermark2.png b/tests/manual/examples/widgets/dialogs/classwizard/images/watermark2.png similarity index 100% rename from examples/widgets/dialogs/classwizard/images/watermark2.png rename to tests/manual/examples/widgets/dialogs/classwizard/images/watermark2.png diff --git a/examples/widgets/dialogs/classwizard/main.cpp b/tests/manual/examples/widgets/dialogs/classwizard/main.cpp similarity index 100% rename from examples/widgets/dialogs/classwizard/main.cpp rename to tests/manual/examples/widgets/dialogs/classwizard/main.cpp