Spec-Zone.ru › Qt 5.15

Класс QWizard

Класс QWizard предоставляет структуру для мастеров. Подробнее...

Заголовок: #include <QWizard>
qmake: QT += widgets
С момента версии: Qt 4.3
Наследует: QDialog

Этот класс был введен в Qt 4.3.

  • Список всех членов, включая унаследованные члены
  • Устаревшие члены

Открытые типы

enum WizardButton { BackButton, NextButton, CommitButton, FinishButton, CancelButton, …, Stretch }
enum WizardOption { IndependentPages, IgnoreSubTitles, ExtendedWatermarkPixmap, NoDefaultButton, NoBackButtonOnStartPage, …, NoCancelButtonOnLastPage }
flags WizardOptions
enum WizardPixmap { WatermarkPixmap, LogoPixmap, BannerPixmap, BackgroundPixmap }
enum WizardStyle { ClassicStyle, ModernStyle, MacStyle, AeroStyle }

Свойства

  • currentId : const int
  • options : WizardOptions
  • startId : int
  • subTitleFormat : Qt::TextFormat
  • titleFormat : Qt::TextFormat
  • wizardStyle : WizardStyle

Открытые функции

QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
virtual ~QWizard()
int addPage(QWizardPage *page)
QAbstractButton * button(QWizard::WizardButton which) const
QString buttonText(QWizard::WizardButton which) const
int currentId() const
QWizardPage * currentPage() const
QVariant field(const QString &name) const
bool hasVisitedPage(int id) const
virtual int nextId() const
QWizard::WizardOptions options() const
QWizardPage * page(int id) const
QList<int> pageIds() const
QPixmap pixmap(QWizard::WizardPixmap which) const
void removePage(int id)
void setButton(QWizard::WizardButton which, QAbstractButton *button)
void setButtonLayout(const QList<QWizard::WizardButton> &layout)
void setButtonText(QWizard::WizardButton which, const QString &text)
void setDefaultProperty(const char *className, const char *property, const char *changedSignal)
void setField(const QString &name, const QVariant &value)
void setOption(QWizard::WizardOption option, bool on = true)
void setOptions(QWizard::WizardOptions options)
void setPage(int id, QWizardPage *page)
void setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)
void setSideWidget(QWidget *widget)
void setStartId(int id)
void setSubTitleFormat(Qt::TextFormat format)
void setTitleFormat(Qt::TextFormat format)
void setWizardStyle(QWizard::WizardStyle style)
QWidget * sideWidget() const
int startId() const
Qt::TextFormat subTitleFormat() const
bool testOption(QWizard::WizardOption option) const
Qt::TextFormat titleFormat() const
virtual bool validateCurrentPage()
QList<int> visitedIds() const
QWizard::WizardStyle wizardStyle() const

Переопределенные открытые функции

virtual void setVisible(bool visible) override
virtual QSize sizeHint() const override

Открытые слоты

void back()
void next()
void restart()

Сигналы

void currentIdChanged(int id)
void customButtonClicked(int which)
void helpRequested()
void pageAdded(int id)
void pageRemoved(int id)

Protected Functions

virtual void cleanupPage(int id)
virtual void initializePage(int id)

Reimplemented Protected Functions

virtual void done(int result) override
virtual bool event(QEvent *event) override
virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result) override
virtual void paintEvent(QPaintEvent *event) override
virtual void resizeEvent(QResizeEvent *event) override

Detailed Description

Мастер (также называется помощником в macOS) — это специальный тип диалогового окна ввода, состоящий из последовательности страниц. Цель мастера — поэтапно сопровождать пользователя в процессе. Мастера полезны для сложных или редких задач, которые пользователи могут найти сложными для изучения.

QWizard наследует QDialog и представляет собой мастер. Каждая страница — это QWizardPage (подкласс QWidget). Чтобы создать собственные мастера, вы можете использовать эти классы напрямую или наследовать их для большего контроля.

Темы:

Простой пример

Следующий пример иллюстрирует, как создать страницы мастера и добавить их в мастер. Для более сложных примеров см. Класс Мастер и Лицензионный Мастер.

QWizardPage *createIntroPage()
{
    QWizardPage *page = new QWizardPage;
    page->setTitle("Introduction");

    QLabel *label = new QLabel("This wizard will help you register your copy "
                               "of Super Product Two.");
    label->setWordWrap(true);

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(label);
    page->setLayout(layout);

    return page;
}

QWizardPage *createRegistrationPage()
{
    ...
}

QWizardPage *createConclusionPage()
{
    ...
}

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);

    QApplication app(argc, argv);

#ifndef QT_NO_TRANSLATION
    QString translatorFileName = QLatin1String("qtbase_");
    translatorFileName += QLocale::system().name();
    QTranslator *translator = new QTranslator(&app);
    if (translator->load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
        app.installTranslator(translator);
#endif

    QWizard wizard;
    wizard.addPage(createIntroPage());
    wizard.addPage(createRegistrationPage());
    wizard.addPage(createConclusionPage());

    wizard.setWindowTitle("Trivial Wizard");
    wizard.show();

    return app.exec();
}

Вид мастера

QWizard поддерживает четыре вида мастеров:

  • ClassicStyle
  • ModernStyle
  • MacStyle
  • AeroStyle

Вы можете явно установить используемый вид с помощью setWizardStyle() (например, если вы хотите, чтобы вид был одинаковым на всех платформах).

ClassicStyle ModernStyle MacStyle AeroStyle

Примечание: AeroStyle имеет эффект только на системе Windows Vista с включенной альфа-композицией. ModernStyle используется в качестве резервного варианта, когда это условие не выполняется.

В дополнение к стилю мастера есть несколько опций, которые контролируют вид мастера. Их можно установить с помощью setOption() или setOptions(). Например, HaveHelpButton заставляет QWizard отображать кнопку Справка вместе с другими кнопками мастера.

Вы даже можете изменить порядок кнопок мастера на любой произвольный порядок с помощью setButtonLayout(), и вы можете добавить до трех пользовательских кнопок (например, кнопку Печать) в строку кнопок. Это достигается вызовом setButton() или setButtonText() с CustomButton1, CustomButton2 или CustomButton3 для настройки кнопки и включением опций HaveCustomButton1, HaveCustomButton2 или HaveCustomButton3. Когда пользователь нажимает пользовательскую кнопку, генерируется сигнал customButtonClicked(). Например:

        wizard()->setButtonText(QWizard::CustomButton1, tr("&Print"));
        wizard()->setOption(QWizard::HaveCustomButton1, true);
        connect(wizard(), &QWizard::customButtonClicked,
                this, &ConclusionPage::printButtonClicked);

Элементы страницы мастера

Мастера состоят из последовательности QWizardPages. В любое время отображается только одна страница. Страница имеет следующие атрибуты:

  • Заголовок title.
  • Подзаголовок subTitle.
  • Набор растровых изображений, которые могут или не могут учитываться, в зависимости от стиля мастера:
    • WatermarkPixmap (используется ClassicStyle и ModernStyle)
    • BannerPixmap (используется ModernStyle)
    • LogoPixmap (используется ClassicStyle и ModernStyle)
    • BackgroundPixmap (используется MacStyle)

На диаграмме ниже показано, как QWizard отображает эти атрибуты, предположительно, что все они присутствуют, и используется ModernStyle:

Когда установлен subTitle, QWizard отображает его в заголовке, в этом случае он также использует BannerPixmap и LogoPixmap для оформления заголовка. WatermarkPixmap отображается слева ниже заголовка. Внизу расположена строка кнопок, позволяющих пользователю перемещаться по страницам.

Сама страница (виджет QWizardPage) занимает область между заголовком, водяным знаком и строкой кнопок. Как правило, страница представляет собой QWizardPage, на котором установлен QGridLayout со стандартными дочерними виджетами (QLabel, QLineEdit и т. д.).

Если стиль мастера — MacStyle, страница выглядит совершенно по-другому:

Водяные знаки, значки баннера и логотипа игнорируются MacStyle. Если установлен BackgroundPixmap, он используется в качестве фона для мастера; в противном случае используется стандартное изображение "помощника".

Заголовок и подзаголовок задаются с помощью вызовов QWizardPage::setTitle() и QWizardPage::setSubTitle() на отдельных страницах. Они могут быть обычным текстом или HTML (см. titleFormat и subTitleFormat). Значки можно установить глобально для всего мастера с помощью setPixmap() или на каждой странице с помощью QWizardPage::setPixmap().

Регистрация и использование полей

Во многих мастерах содержимое страницы может влиять на значения по умолчанию для полей на последующих страницах. Для упрощения взаимодействия между страницами QWizard поддерживает механизм "полей", который позволяет регистрировать поле (например, QLineEdit) на странице и получать доступ к его значению с любой другой страницы. Также можно указать обязательные поля (т. е. поля, которые должны быть заполнены, прежде чем пользователь сможет перейти к следующей странице).

Чтобы зарегистрировать поле, вызовите QWizardPage::registerField() field. Например:

ClassInfoPage::ClassInfoPage(QWidget *parent)
    : QWizardPage(parent)
{
    ...
    classNameLabel = new QLabel(tr("&Class name:"));
    classNameLineEdit = new QLineEdit;
    classNameLabel->setBuddy(classNameLineEdit);

    baseClassLabel = new QLabel(tr("B&ase class:"));
    baseClassLineEdit = new QLineEdit;
    baseClassLabel->setBuddy(baseClassLineEdit);

    qobjectMacroCheckBox = new QCheckBox(tr("Generate Q_OBJECT &macro"));

    registerField("className*", classNameLineEdit);
    registerField("baseClass", baseClassLineEdit);
    registerField("qobjectMacro", qobjectMacroCheckBox);
    ...
}

Вышеупомянутый код регистрирует три поля, className, baseClass, и qobjectMacro, которые связаны с тремя дочерними виджетами. Звездочка (*) рядом с className обозначает обязательное поле.

Поля любой страницы доступны с любой другой страницы. Например:

void OutputFilesPage::initializePage()
{
    QString className = field("className").toString();
    headerLineEdit->setText(className.toLower() + ".h");
    implementationLineEdit->setText(className.toLower() + ".cpp");
    outputDirLineEdit->setText(QDir::toNativeSeparators(QDir::tempPath()));
}

Здесь мы используем QWizardPage::field() для доступа к содержимому поля className (которое было определено на ClassInfoPage) и используем его для инициализации OutputFilePage. Содержимое поля возвращается в виде QVariant.

Когда мы создаём поле с помощью QWizardPage::registerField(), мы передаём уникальное имя поля и виджет. Мы также можем предоставить имя свойства Qt и сигнал "изменения" (сигнал, который генерируется при изменении свойства) в качестве третьего и четвёртого аргументов; однако это не требуется для наиболее распространённых виджетов Qt, таких как QLineEdit, QCheckBox и QComboBox, так как QWizard знает, какие свойства искать.

Если к имени добавляется звёздочка (*) при регистрации свойства, поле является обязательным полем. Когда у страницы есть обязательные поля, кнопки Далее и/или Готово активируются только тогда, когда все обязательные поля заполнены.

Для того, чтобы считать поле «заполненным», QWizard просто проверяет, что текущее значение поля не равно исходному значению (значению, которое оно имело, когда вызывался метод initializePage()). Для подклассов QLineEdit и QAbstractSpinBox QWizard также проверяет, что метод hasAcceptableInput() возвращает true, чтобы учесть любого валидатора или маску.

Механизм обязательных полей QWizard предоставляется для удобства. Более мощная (но и более сложная) альтернатива — переопределить метод QWizardPage::isComplete() и вызывать сигнал QWizardPage::completeChanged() всякий раз, когда страница становится полной или неполной.

Состояние включения/выключения кнопок Далее и/или Готово — один из способов проверки введённых пользователем данных. Другой способ — переопределить метод validateCurrentPage() (или QWizardPage::validatePage()) для проведения проверки в последний момент (и вывода сообщения об ошибке, если пользователь ввёл неполную или недопустимую информацию). Если функция возвращает true, отображается следующая страница (или мастер завершается); в противном случае текущая страница остаётся.

Создание линейных мастеров

Большинство мастеров имеют линейную структуру, с первой страницей, за которой следует вторая и так далее до последней страницы. Пример мастера Class Wizard является таким мастером. В QWizard линейные мастера создаются путём создания экземпляров QWizardPage и вставки их с помощью метода addPage(). По умолчанию страницы отображаются в том порядке, в котором они были добавлены. Например:

ClassWizard::ClassWizard(QWidget *parent)
    : QWizard(parent)
{
    addPage(new IntroPage);
    addPage(new ClassInfoPage);
    addPage(new CodeStylePage);
    addPage(new OutputFilesPage);
    addPage(new ConclusionPage);
    ...
}

Когда страница должна быть отображена, QWizard вызывает метод initializePage() (который, в свою очередь, вызывает метод QWizardPage::initializePage()), чтобы заполнить страницу значениями по умолчанию. По умолчанию эта функция ничего не делает, но её можно переопределить, чтобы инициализировать содержимое страницы на основе полей других страниц (см. пример выше).

Если пользователь нажимает кнопку Назад, вызывается метод cleanupPage() (который, в свою очередь, вызывает метод QWizardPage::cleanupPage()). Стандартная реализация сбрасывает поля страницы до их исходных значений (значений, которые они имели до вызова метода initializePage()). Если вы хотите, чтобы кнопка Назад не была разрушительной и сохраняла введённые пользователем значения, просто включите опцию IndependentPages.

Создание нелинейных мастеров

Некоторые мастера более сложны, так как они позволяют разные пути обхода, основанные на информации, предоставленной пользователем. Пример мастера License Wizard демонстрирует это. Он предоставляет пять страниц мастера; в зависимости от выбранных параметров пользователь может перейти на разные страницы.

В сложных мастерах страницы идентифицируются с помощью идентификаторов. Эти идентификаторы обычно определяются с помощью перечисления. Например:

class LicenseWizard : public QWizard
{
    ...
    enum { Page_Intro, Page_Evaluate, Page_Register, Page_Details,
           Page_Conclusion };
    ...
};

Страницы вставляются с помощью метода setPage(), который принимает идентификатор и экземпляр QWizardPage (или его подкласса):

LicenseWizard::LicenseWizard(QWidget *parent)
    : QWizard(parent)
{
    setPage(Page_Intro, new IntroPage);
    setPage(Page_Evaluate, new EvaluatePage);
    setPage(Page_Register, new RegisterPage);
    setPage(Page_Details, new DetailsPage);
    setPage(Page_Conclusion, new ConclusionPage);
    ...
}

По умолчанию страницы отображаются в порядке возрастания идентификатора. Чтобы обеспечить динамический порядок, зависящий от выбранных пользователем параметров, необходимо переопределить метод QWizardPage::nextId(). Например:

int IntroPage::nextId() const
{
    if (evaluateRadioButton->isChecked()) {
        return LicenseWizard::Page_Evaluate;
    } else {
        return LicenseWizard::Page_Register;
    }
}

int EvaluatePage::nextId() const
{
    return LicenseWizard::Page_Conclusion;
}

int RegisterPage::nextId() const
{
    if (upgradeKeyLineEdit->text().isEmpty()) {
        return LicenseWizard::Page_Details;
    } else {
        return LicenseWizard::Page_Conclusion;
    }
}

int DetailsPage::nextId() const
{
    return LicenseWizard::Page_Conclusion;
}

int ConclusionPage::nextId() const
{
    return -1;
}

Также можно разместить всю логику в одном месте, переопределив метод QWizard::nextId(). Например:

int LicenseWizard::nextId() const
{
    switch (currentId()) {
    case Page_Intro:
        if (field("intro.evaluate").toBool()) {
            return Page_Evaluate;
        } else {
            return Page_Register;
        }
    case Page_Evaluate:
        return Page_Conclusion;
    case Page_Register:
        if (field("register.upgradeKey").toString().isEmpty()) {
            return Page_Details;
        } else {
            return Page_Conclusion;
        }
    case Page_Details:
        return Page_Conclusion;
    case Page_Conclusion:
    default:
        return -1;
    }
}

Чтобы начать с другой страницы, отличной от страницы с наименьшим идентификатором, вызовите метод setStartId().

Чтобы проверить, была ли страница посещена, вызовите метод hasVisitedPage(). Например:

void ConclusionPage::initializePage()
{
    QString licenseText;

    if (wizard()->hasVisitedPage(LicenseWizard::Page_Evaluate)) {
        licenseText = tr("<u>Evaluation License Agreement:</u> "
                         "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)) {
        licenseText = tr("<u>First-Time License Agreement:</u> "
                         "You can use this software subject to the license "
                         "you will receive by email.");
    } else {
        licenseText = tr("<u>Upgrade License Agreement:</u> "
                         "This software is licensed under the terms of your "
                         "current license.");
    }
    bottomLabel->setText(licenseText);
}

См. также QWizardPage, Пример мастера Class Wizard и Пример мастера License Wizard.

Документация типов членов

перечисление QWizard::WizardButton

Это перечисление определяет кнопки в мастере.

Константа Значение Описание
QWizard::BackButton 0 Кнопка Назад (Назад на macOS)
QWizard::NextButton 1 Кнопка Далее (Продолжить на macOS)
QWizard::CommitButton 2 Кнопка Подтвердить
QWizard::FinishButton 3 Кнопка Готово (Готово на macOS)
QWizard::CancelButton 4 Кнопка Отмена (см. также NoCancelButton)
QWizard::HelpButton 5 Кнопка Справка (см. также HaveHelpButton)
QWizard::CustomButton1 6 Первая настраиваемая кнопка (см. также HaveCustomButton1)
QWizard::CustomButton2 7 Вторая настраиваемая кнопка (см. также HaveCustomButton2)
QWizard::CustomButton3 8 Третья настраиваемая кнопка (см. также HaveCustomButton3)

Следующее значение полезно только при вызове метода setButtonLayout():

Константа Значение Описание
QWizard::Stretch 9 Горизонтальное расширение в макете кнопок

См. также setButton(), setButtonText(), setButtonLayout(), и customButtonClicked().

перечисление QWizard::WizardOptionфлаги QWizard::WizardOptions

Это перечисление определяет различные параметры, влияющие на внешний вид мастера.

Константа Значение Описание
QWizard::IndependentPages 0x00000001 Страницы независимы друг от друга (т.е. не получают значения друг от друга).
QWizard::IgnoreSubTitles 0x00000002 Не отображать подзаголовки, даже если они установлены.
QWizard::ExtendedWatermarkPixmap 0x00000004 Расширить любой WatermarkPixmap до края окна.
QWizard::NoDefaultButton 0x00000008 Не устанавливать кнопку Далее или Готово в качестве кнопки по умолчанию диалогового окна.
QWizard::NoBackButtonOnStartPage 0x00000010 Не отображать кнопку Назад на стартовой странице.
QWizard::NoBackButtonOnLastPage 0x00000020 Не отображать кнопку Назад на последней странице.
QWizard::DisabledBackButtonOnLastPage 0x00000040 Отключить кнопку Назад на последней странице.
QWizard::HaveNextButtonOnLastPage 0x00000080 Отобразить (отключенную) кнопку Далее на последней странице.
QWizard::HaveFinishButtonOnEarlyPages 0x00000100 Отобразить (отключенную) кнопку Готово на страницах, не являющихся заключительной.
QWizard::NoCancelButton 0x00000200 Не отображать кнопку Отмена.
QWizard::CancelButtonOnLeft 0x00000400 Разместить кнопку Отмена слева от Назад (а не справа от Готово или Далее).
QWizard::HaveHelpButton 0x00000800 Отобразить кнопку Справка.
QWizard::HelpButtonOnRight 0x00001000 Разместить кнопку Справка в правом крайнем углу макета кнопок (а не в левом крайнем).
QWizard::HaveCustomButton1 0x00002000 Отобразить первую настраиваемую кнопку (CustomButton1).
QWizard::HaveCustomButton2 0x00004000 Отобразить вторую настраиваемую кнопку (CustomButton2).
QWizard::HaveCustomButton3 0x00008000 Отобразить третью настраиваемую кнопку (CustomButton3).
QWizard::NoCancelButtonOnLastPage 0x00010000 Не отображать кнопку Отмена на последней странице.

Тип WizardOptions является псевдонимом для QFlags<WizardOption>. Он хранит логическое ИЛИ сочетание значений WizardOption.

См. также setOptions(), setOption() и testOption().

enum QWizard::WizardPixmap

Этот перечисление определяет пиктограммы, которые могут быть связаны со страницей.

Константа Значение Описание
QWizard::WatermarkPixmap 0 Высокая пиктограмма слева на странице ClassicStyle или ModernStyle
QWizard::LogoPixmap 1 Маленькая пиктограмма справа от заголовка страницы ClassicStyle или ModernStyle
QWizard::BannerPixmap 2 Пиктограмма, занимающая фон заголовка страницы ModernStyle
QWizard::BackgroundPixmap 3 Пиктограмма, занимающая фон заголовка мастера MacStyle

См. также setPixmap(), QWizardPage::setPixmap() и Элементы страницы мастера.

enum QWizard::WizardStyle

Это перечисление определяет различные варианты оформления, поддерживаемые QWizard.

Константа Значение Описание
QWizard::ClassicStyle 0 Классический вид Windows
QWizard::ModernStyle 1 Современный вид Windows
QWizard::MacStyle 2 Вид macOS
QWizard::AeroStyle 3 Вид Windows Aero

См. также setWizardStyle(), WizardOption и Вид и ощущения мастера.

Документация по свойствам

currentId : const int

Это свойство содержит ID текущей страницы

Это свойство не может быть установлено напрямую. Чтобы изменить текущую страницу, вызовите next(), back() или restart().

По умолчанию это свойство имеет значение -1, что указывает на то, что сейчас не отображается ни одна страница.

Функции доступа:

int currentId() const

Сигнал уведомления:

void currentIdChanged(int id)

См. также currentPage().

options : WizardOptions

Это свойство хранит различные параметры, которые влияют на внешний вид мастера

По умолчанию установлены следующие параметры (в зависимости от платформы):

  • Windows: HelpButtonOnRight.
  • macOS: NoDefaultButton и NoCancelButton.
  • X11 и QWS (Qt для встраиваемой Linux): отсутствуют.

Функции доступа:

QWizard::WizardOptions options() const
void setOptions(QWizard::WizardOptions options)

См. также wizardStyle.

startId : int

Это свойство содержит ID первой страницы

Если это свойство не установлено явно, оно по умолчанию равно наименьшему ID страницы в этом мастере или -1, если еще ни одна страница не была вставлена.

Функции доступа:

int startId() const
void setStartId(int id)

См. также restart() и nextId().

subTitleFormat : Qt::TextFormat

Это свойство содержит формат текста, используемый подзаголовками страниц

Формат по умолчанию - Qt::AutoText.

Функции доступа:

Qt::TextFormat subTitleFormat() const
void setSubTitleFormat(Qt::TextFormat format)

См. также QWizardPage::title и titleFormat.

titleFormat : Qt::TextFormat

Это свойство содержит формат текста, используемый заголовками страниц

Формат по умолчанию - Qt::AutoText.

Функции доступа:

Qt::TextFormat titleFormat() const
void setTitleFormat(Qt::TextFormat format)

См. также QWizardPage::title и subTitleFormat.

wizardStyle : WizardStyle

Это свойство содержит вид и ощущения мастера

По умолчанию QWizard использует AeroStyle на системе Windows Vista с включенным альфа-компостированием, независимо от текущего стиля виджетов. Если это не так, стиль мастера по умолчанию зависит от текущего стиля виджета следующим образом: MacStyle по умолчанию, если текущий стиль виджета - QMacStyle, ModernStyle по умолчанию, если текущий стиль виджета - QWindowsStyle, и ClassicStyle по умолчанию во всех остальных случаях.

Функции доступа:

QWizard::WizardStyle wizardStyle() const
void setWizardStyle(QWizard::WizardStyle style)

См. также Вид и ощущения мастера и options.

Документация по членам-функциям

QWizard::QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

Создает мастера с заданным parent и флагами окна flags.

См. также parent() и windowFlags().

back(void QWizard::back()

Возвращается на предыдущую страницу.

Это эквивалентно нажатию кнопки Назад.

См. также next(), accept(), reject() и restart().

currentIdChanged(void QWizard::currentIdChanged(int id)

Этот сигнал генерируется при изменении текущей страницы с новым текущим id.

Примечание: Сигнал уведомления для свойства currentId.

См. также currentId() и currentPage().

customButtonClicked(void QWizard::customButtonClicked(int which)

Этот сигнал генерируется, когда пользователь нажимает на пользовательскую кнопку. which может быть CustomButton1, CustomButton2 или CustomButton3.

По умолчанию пользовательская кнопка не отображается. Вызовите setOption() с HaveCustomButton1, HaveCustomButton2 или HaveCustomButton3, чтобы отобразить её, и используйте setButtonText() или setButton() для её настройки.

См. также helpRequested().

helpRequested(void QWizard::helpRequested()

Этот сигнал генерируется, когда пользователь нажимает кнопку Справка.

END_OF_DOCUMENT_MARKER

По умолчанию кнопка Справка не отображается. Вызовите setOption(HaveHelpButton, true), чтобы отобразить её.

Пример:

LicenseWizard::LicenseWizard(QWidget *parent)
    : QWizard(parent)
{
    ...
    setOption(HaveHelpButton, true);
    connect(this, &QWizard::helpRequested, this, &LicenseWizard::showHelp);
    ...
}

void LicenseWizard::showHelp()
{
    static QString lastHelpMessage;

    QString message;

    switch (currentId()) {
    case Page_Intro:
        message = tr("The decision you make here will affect which page you "
                     "get to see next.");
        break;
    ...
    default:
        message = tr("This help is likely not to be of any help.");
    }

    QMessageBox::information(this, tr("License Wizard Help"), message);

}

См. также customButtonClicked().

[slot] void QWizard::next()

Переходит к следующей странице.

Это эквивалентно нажатию кнопок Далее или Применить.

См. также nextId(), back(), accept(), reject(), и restart().

[signal] void QWizard::pageAdded(int id)

Этот сигнал испускается всякий раз, когда к мастеру добавляется страница. Идентификатор страницы id передаётся в качестве параметра.

Эта функция была добавлена в Qt 4.7.

См. также addPage(), setPage(), и startId().

[signal] void QWizard::pageRemoved(int id)

Этот сигнал испускается всякий раз, когда из мастера удаляется страница. Идентификатор страницы id передаётся в качестве параметра.

Эта функция была добавлена в Qt 4.7.

См. также removePage() и startId().

[slot] void QWizard::restart()

Перезапускает мастер с начальной страницы. Эта функция вызывается автоматически при отображении мастера.

См. также startId().

[virtual] QWizard::~QWizard()

Уничтожает мастер и его страницы, освобождая выделенные ресурсы.

int QWizard::addPage(QWizardPage *page)

Добавляет заданную страницу к мастеру и возвращает идентификатор страницы.

Идентификатор гарантированно будет больше любого другого идентификатора в QWizard на данный момент.

См. также setPage(), page(), и pageAdded().

QAbstractButton *QWizard::button(QWizard::WizardButton which) const

Возвращает кнопку, соответствующую роли which.

См. также setButton() и setButtonText().

QString QWizard::buttonText(QWizard::WizardButton which) const

Возвращает текст на кнопке which.

Если текст был задан с помощью setButtonText(), возвращается этот текст.

По умолчанию текст на кнопках зависит от wizardStyle. Например, на macOS кнопка Далее называется Продолжить.

См. также button(), setButton(), setButtonText(), QWizardPage::buttonText(), и QWizardPage::setButtonText().

[virtual protected] void QWizard::cleanupPage(int id)

Эта виртуальная функция вызывается QWizard для очистки страницы id перед тем, как пользователь покинет её, нажав Назад (если не установлено опция QWizard::IndependentPages).

Реализация по умолчанию вызывает QWizardPage::cleanupPage() на странице(id).

См. также QWizardPage::cleanupPage() и initializePage().

QWizardPage *QWizard::currentPage() const

Возвращает указатель на текущую страницу или nullptr , если текущей страницы нет (например, перед отображением мастера).

Это эквивалентно вызову page(currentId()).

См. также page(), currentId(), и restart().

[override virtual protected] void QWizard::done(int result)

Переопределяет: QDialog::done(int r).

[override virtual protected] bool QWizard::event(QEvent *event)

Переопределяет: QWidget::event(QEvent *event).

QVariant QWizard::field(const QString &name) const

Возвращает значение поля с именем name.

Эта функция может использоваться для доступа к полям на любой странице мастера.

См. также QWizardPage::registerField(), QWizardPage::field(), и setField().

bool QWizard::hasVisitedPage(int id) const

Возвращает true , если история посещений содержит страницу id; в противном случае возвращает false.

Нажатие кнопки Назад снова отмечает текущую страницу как «непосещённую».

См. также visitedPages().

[virtual protected] void QWizard::initializePage(int id)

Эта виртуальная функция вызывается QWizard для подготовки страницы id перед её отображением, либо в результате вызова QWizard::restart(), либо в результате нажатия пользователем кнопки Далее. (Однако, если установлена опция QWizard::IndependentPages, эта функция вызывается только при первом отображении страницы.)

Переопределяя эту функцию, вы можете гарантировать, что поля страницы будут должным образом инициализированы на основе полей с предыдущих страниц.

Реализация по умолчанию вызывает QWizardPage::initializePage() на странице(id).

См. также QWizardPage::initializePage() и cleanupPage().

[override virtual protected] bool QWizard::nativeEvent(const QByteArray &eventType, void *message, long *result)

Переопределяет: QWidget::nativeEvent(const QByteArray &eventType, void *message, long *result).

[virtual] int QWizard::nextId() const

Эта виртуальная функция вызывается QWizard для определения страницы, которая должна быть показана при нажатии пользователем кнопки Далее.

Возвращаемое значение — идентификатор следующей страницы, или -1, если следующей страницы нет.

Реализация по умолчанию вызывает QWizardPage::nextId() на текущей странице.

Переопределяя эту функцию, вы можете указать динамический порядок страниц.

См. также QWizardPage::nextId() и currentPage().

QWizardPage *QWizard::page(int id) const

Возвращает страницу с заданным id или nullptr , если такой страницы нет.

См. также addPage() и setPage().

QList<int> QWizard::pageIds() const

Возвращает список идентификаторов страниц.

Эта функция была добавлена в Qt 4.5.

[override virtual protected] void QWizard::paintEvent(QPaintEvent *event)

Переопределяет: QWidget::paintEvent(QPaintEvent *event).

QPixmap QWizard::pixmap(QWizard::WizardPixmap which) const

Возвращает пиктограмму, установленную для роли which.

По умолчанию устанавливается только пиктограмма фона BackgroundPixmap на macOS версии 10.13 и ранее.

См. также setPixmap(), QWizardPage::pixmap(), и Элементы страницы мастера.

void QWizard::removePage(int id)

Удаляет страницу с заданным id. cleanupPage() будет вызвана при необходимости.

Примечание: Удаление страницы может повлиять на значение свойства startId.

Эта функция была добавлена в Qt 4.5.

См. также addPage(), setPage(), pageRemoved(), и startId().

[override virtual protected] void QWizard::resizeEvent(QResizeEvent *event)

Переопределяет: QDialog::resizeEvent(QResizeEvent *).

void QWizard::setButton(QWizard::WizardButton which, QAbstractButton *button)

Устанавливает кнопку, соответствующую роли which, на button.

Чтобы добавить дополнительные кнопки к мастеру (например, кнопку Печать), можно вызвать setButton() с CustomButton1 до CustomButton3, и сделать кнопки видимыми с помощью опций HaveCustomButton1 до HaveCustomButton3.

См. также button(), setButtonText(), setButtonLayout() и options.

void QWizard::setButtonLayout(const QList<QWizard::WizardButton> &layout)

Устанавливает порядок отображения кнопок в layout, где layout — список WizardButton.

Значение по умолчанию зависит от установленных опций (например, HelpButtonOnRight). Вы можете вызвать эту функцию, если вам требуется больший контроль над расположением кнопок, чем предоставляет options.

Вы можете указать горизонтальные растяжения в макете, используя Stretch.

Пример:

MyWizard::MyWizard(QWidget *parent)
    : QWizard(parent)
{
    ...
    QList<QWizard::WizardButton> layout;
    layout << QWizard::Stretch << QWizard::BackButton << QWizard::CancelButton
           << QWizard::NextButton << QWizard::FinishButton;
    setButtonLayout(layout);
    ...
}

См. также setButton(), setButtonText() и setOptions().

void QWizard::setButtonText(QWizard::WizardButton which, const QString &text)

Устанавливает текст на кнопке which в text.

По умолчанию текст на кнопках зависит от wizardStyle. Например, на macOS кнопка Далее называется Продолжить.

Чтобы добавить дополнительные кнопки к мастеру (например, кнопку Печать), можно вызвать setButtonText() с CustomButton1, CustomButton2 или CustomButton3, чтобы установить их текст, и сделать кнопки видимыми с помощью опций HaveCustomButton1, HaveCustomButton2 и/или HaveCustomButton3.

Текст кнопок также может быть задан на каждой странице с помощью QWizardPage::setButtonText().

См. также buttonText(), setButton(), button(), setButtonLayout(), setOptions() и QWizardPage::setButtonText().

void QWizard::setDefaultProperty(const char *className, const char *property, const char *changedSignal)

Устанавливает свойство по умолчанию для className в property, а связанный сигнал изменения — в changedSignal.

Свойство по умолчанию используется, когда экземпляр className (или одного из его подклассов) передаётся в QWizardPage::registerField() и не указано свойство.

QWizard знает наиболее распространённые виджеты Qt. Для этих (или их подклассов) вам не нужно указывать property или changedSignal. В таблице ниже перечислены эти виджеты:

Виджет Свойство Сигнал уведомления о изменении
QAbstractButton bool checked toggled()
QAbstractSlider int value valueChanged()
QComboBox int currentIndex currentIndexChanged()
QDateTimeEdit QDateTime dateTime dateTimeChanged()
QLineEdit QString text textChanged()
QListWidget int currentRow currentRowChanged()
QSpinBox int value valueChanged()

См. также QWizardPage::registerField().

void QWizard::setField(const QString &name, const QVariant &value)

Устанавливает значение поля с именем name в value.

Эта функция может быть использована для установки полей на любой странице мастера.

См. также QWizardPage::registerField(), QWizardPage::setField() и field().

void QWizard::setOption(QWizard::WizardOption option, bool on = true)

Устанавливает заданную опцию option в активное состояние, если on равно true; в противном случае опция option отключается.

См. также options, testOption() и setWizardStyle().

void QWizard::setPage(int id, QWizardPage *page)

Добавляет заданную страницу page к мастеру с заданным id.

Примечание: Добавление страницы может повлиять на значение свойства startId, если оно не было явно задано.

См. также addPage(), page() и pageAdded().

void QWizard::setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)

Устанавливает пиктограмму для роли which в pixmap.

Пиктограммы используются QWizard при отображении страницы. Какие пиктограммы фактически используются, зависит от стиля мастера.

Пиктограммы также могут быть заданы для конкретной страницы с помощью QWizardPage::setPixmap().

См. также pixmap(), QWizardPage::setPixmap() и Элементы страницы мастера.

void QWizard::setSideWidget(QWidget *widget)

Устанавливает указанный widget для отображения слева от мастера. Для стилей, использующих WatermarkPixmap (ClassicStyle и ModernStyle), виджет отображается поверх водяного знака; для других стилей или когда водяной знак не указан, виджет отображается слева от мастера.

Передача nullptr не отображает виджет слева.

Когда widget не nullptr, мастер переродирует его.

Любой предыдущий виджет слева скрывается.

Вы можете вызвать setSideWidget() с тем же виджетом в разное время.

Все виджеты, установленные здесь, будут удалены мастером при его уничтожении, если вы не переродите виджет отдельно после установки другого виджета слева (или nullptr).

По умолчанию виджет слева отсутствует.

Эта функция была добавлена в Qt 4.7.

См. также sideWidget().

[override virtual] void QWizard::setVisible(bool visible)

Переопределяет: QDialog::setVisible(bool visible).

QWidget *QWizard::sideWidget() const

Возвращает виджет слева от мастера или nullptr.

По умолчанию виджет слева отсутствует.

Эта функция была добавлена в Qt 4.7.

См. также setSideWidget().

[override virtual] QSize QWizard::sizeHint() const

Переопределяет: QDialog::sizeHint() const.

bool QWizard::testOption(QWizard::WizardOption option) const

Возвращает true, если заданная опция option включена; в противном случае возвращает false.

См. также options, setOption() и setWizardStyle().

[virtual] bool QWizard::validateCurrentPage()

Эта виртуальная функция вызывается QWizard при нажатии пользователем на Далее или Готово для выполнения последней проверки. Если она возвращает true, то отображается следующая страница (или мастер завершает работу); в противном случае текущая страница остаётся активной.

По умолчанию вызывается QWizardPage::validatePage() на currentPage().

Когда это возможно, обычно лучше стилистически отключить кнопку Далее или Готово (указав обязательные поля или переопределив QWizardPage::isComplete()) , чем переопределять validateCurrentPage().

См. также QWizardPage::validatePage() и currentPage().

QList<int> QWizard::visitedIds() const

Возвращает список идентификаторов посещённых страниц в порядке их посещения.

Эта функция была введена в Qt 5.15.

См. также hasVisitedPage().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qwizard.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API