Spec-Zone.ru › Qt 5.11

Класс QWizard

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

Заголовок: #include <QWizard>
qmake: QT += widgets
С версии: Qt 4.3
Наследует: QDialog
  • Список всех членов, включая унаследованные

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

enum WizardButton { BackButton, NextButton, CommitButton, FinishButton, ..., Stretch }
enum WizardOption { IndependentPages, IgnoreSubTitles, ExtendedWatermarkPixmap, NoDefaultButton, ..., 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
  • 2 свойства, унаследованные от QDialog
  • 59 свойств, унаследованных от QWidget
  • 1 свойство, унаследованное от QObject

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

QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = ...)
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> visitedPages() const
QWizard::WizardStyle wizardStyle() const

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

virtual void setVisible(bool visible) override
virtual QSize sizeHint() const override
  • 8 открытых функций, унаследованных от QDialog
  • 214 открытых функций, унаследованных от QWidget
  • 34 открытых функций, унаследованных от QObject
  • 14 открытых функций, унаследованных от QPaintDevice

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

void back()
void next()
void restart()
END_OF_DOCUMENT_MARKER
  • 5 публичных слотов, унаследованных от QDialog
  • 19 публичных слотов, унаследованных от QWidget
  • 1 публичный слот, унаследованный от QObject

Сигналы

void currentIdChanged(int id)
void customButtonClicked(int which)
void helpRequested()
void pageAdded(int id)
void pageRemoved(int id)
  • 3 сигнала, унаследованных от QDialog
  • 3 сигнала, унаследованных от QWidget
  • 2 сигнала, унаследованных от QObject

Защищенные функции

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

Переопределенные защищенные функции

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
  • 6 защищенных функций, унаследованных от QDialog
  • 35 защищенных функций, унаследованных от QWidget
  • 9 защищенных функций, унаследованных от QObject
  • 1 защищенная функция, унаследованная от QPaintDevice

Дополнительные унаследованные члены

  • 1 публичная переменная, унаследованная от QObject
  • 5 статических публичных членов, унаследованных от QWidget
  • 10 статических публичных членов, унаследованных от QObject
  • 1 защищенный слот, унаследованный от QWidget
  • 2 защищенных переменных, унаследованных от QObject
  • 1 защищенный тип, унаследованный от QPaintDevice

Подробное описание

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

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

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

Темы:

Тривиальный пример

В следующем примере показано, как создавать страницы мастера и добавлять их в мастер. Более сложные примеры см. в разделах Class Wizard и License Wizard.

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[])
{
    QApplication app(argc, argv);

#ifndef QT_NO_TRANSLATION
    QString translatorFileName = QLatin1String("qt_");
    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);

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

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

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

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

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

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

Если стиль мастера — 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 и сигнал "changed" (сигнал, который испускается при изменении свойства) в качестве третьего и четвёртого аргументов; однако это не обязательно для наиболее распространённых виджетов Qt, таких как QLineEdit, QCheckBox и QComboBox, поскольку QWizard знает, какие свойства искать.

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

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

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

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

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

Большинство мастеров имеют линейную структуру, со страницей 1, за которой следует страница 2 и так далее до последней страницы. Пример 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 иллюстрирует это. Он предоставляет пять страниц мастера; в зависимости от выбранных опций пользователь может перейти на разные страницы.

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

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

Страницы вставляются с помощью setPage(), который принимает ID и экземпляр 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);
    ...
}

По умолчанию страницы отображаются в порядке возрастания ID. Чтобы обеспечить динамический порядок, зависящий от выбранных пользователем опций, необходимо переопределить 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;
    }
}

Чтобы начать с другой страницы, а не со страницы с наименьшим ID, вызовите 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.

Описание типов элементов

enum 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().

enum QWizard::WizardOptionflags QWizard::WizardOptions

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

Константа Значение Описание
QWizard::IndependentPages 0x00000001 Страницы независимы друг от друга (т.е. они не наследуют значения друг от друга).
QWizard::IgnoreSubTitles 0x00000002 Не отображать подзаголовки, даже если они установлены.
QWizard::ExtendedWatermarkPixmap 0x00000004 Расширить любое WatermarkPixmap до самого края окна.
QWizard::NoDefaultButton 0x00000008 Не делать кнопку Далее или Готово кнопкой по умолчанию диалогового окна default button.
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 является typedef для 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 for Embedded 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 = ...)

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

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

[virtual] QWizard::~QWizard()

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

int QWizard::addPage(QWizardPage *page)

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

Гарантируется, что ID будет больше любого другого ID в QWizard на данный момент.

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

[slot] void QWizard::back()

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

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

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

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() на page(id).

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

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

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

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

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

QWizardPage *QWizard::currentPage() const

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

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

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

[signal] void QWizard::customButtonClicked(int which)

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

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

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

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

Реализовано из QDialog::done().

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

Реализовано из QWidget::event().

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

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

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

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

bool QWizard::hasVisitedPage(int id) const

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

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

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

[signal] void QWizard::helpRequested()

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

По умолчанию кнопка Справка не отображается. Вызовите 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().

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

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

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

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

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

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

Реализовано из QWidget::nativeEvent().

[slot] void QWizard::next()

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

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

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

[virtual] int QWizard::nextId() const

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

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

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

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

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

QWizardPage *QWizard::page(int id) const

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

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

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

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

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

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

QList<int> QWizard::pageIds() const

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

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

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

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

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

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

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

Реализовано из QWidget::paintEvent().

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

Возвращает растровое изображение, установленное для роли which.

По умолчанию единственным установленным растровым изображением является BackgroundPixmap на macOS.

См. также setPixmap(), QWizardPage::pixmap(), и Elements of a Wizard Page.

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().

[slot] void QWizard::restart()

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

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

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 истинно; в противном случае, сбрасывает заданный 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), боковой виджет отображается поверх водяного знака, для других стилей или когда водяной знак не предоставлен, боковой виджет отображается слева от мастера.

Передача 0 не показывает боковой виджет.

Когда widget не равен 0, мастер изменяет его родителя.

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

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

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

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

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

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

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

Переопределено из QDialog::setVisible().

QWidget *QWizard::sideWidget() const

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

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

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

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

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

Переопределено из QDialog::sizeHint().

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::visitedPages() const

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

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

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

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

Spec-Zone.ru

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