Класс QWizardPage
Класс QWizardPage — базовый класс для страниц мастера. Подробнее...
| Заголовок: | #include <QWizardPage> |
| qmake: | QT += widgets |
| С тех пор: | Qt 4.3 |
| Наследуется от: | QWidget |
Свойства
Открытые функции
| QWizardPage(QWidget *parent = Q_NULLPTR) | |
| ~QWizardPage() | |
| QString | buttonText(QWizard::WizardButton which) const |
| virtual void | cleanupPage() |
| virtual void | initializePage() |
| bool | isCommitPage() const |
| virtual bool | isComplete() const |
| bool | isFinalPage() const |
| virtual int | nextId() const |
| QPixmap | pixmap(QWizard::WizardPixmap which) const |
| void | setButtonText(QWizard::WizardButton which, const QString &text) |
| void | setCommitPage(bool commitPage) |
| void | setFinalPage(bool finalPage) |
| void | setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap) |
| void | setSubTitle(const QString &subTitle) |
| void | setTitle(const QString &title) |
| QString | subTitle() const |
| QString | title() const |
| virtual bool | validatePage() |
- 211 открытых функций, унаследованных от QWidget
- 31 открытых функций, унаследованных от QObject
- 14 открытых функций, унаследованных от QPaintDevice
Сигналы
| void | completeChanged() |
Защищённые функции
| QVariant | field(const QString &name) const |
| void | registerField(const QString &name, QWidget *widget, const char *property = Q_NULLPTR, const char *changedSignal = Q_NULLPTR) |
| void | setField(const QString &name, const QVariant &value) |
| QWizard * | wizard() const |
- 35 защищённых функций, унаследованных от QWidget
- 9 защищённых функций, унаследованных от QObject
- 1 защищённая функция, унаследованная от QPaintDevice
Дополнительные унаследованные члены
- 19 публичных слотов, унаследованных от QWidget
- 1 публичный слот, унаследованный от QObject
- 5 статических публичных членов, унаследованных от QWidget
- 11 статических публичных членов, унаследованных от QObject
- 1 защищённый слот, унаследованный от QWidget
Подробное описание
Класс QWizardPage — базовый класс для страниц мастера.
QWizard представляет собой мастер. Каждая страница — это QWizardPage. При создании собственных мастеров можно использовать QWizardPage напрямую или наследовать от него для большего контроля.
Страница имеет следующие атрибуты, которые отображаются мастером QWizard: заголовок (title), подзаголовок (subTitle) и набор значков. Подробнее см. Элементы страницы мастера. После добавления страницы в мастер (с помощью QWizard::addPage() или QWizard::setPage()), wizard() возвращает указатель на связанный объект QWizard.
Страница предоставляет пять виртуальных функций, которые можно переопределять для предоставления пользовательского поведения:
- initializePage() вызывается для инициализации содержимого страницы, когда пользователь нажимает кнопку «Далее» мастера. Если требуется получить значения по умолчанию для страницы на основе данных, введённых на предыдущих страницах, эту функцию следует переопределить.
- cleanupPage() вызывается для сброса содержимого страницы, когда пользователь нажимает кнопку «Назад» мастера.
- validatePage() валидирует страницу, когда пользователь нажимает «Далее» или «Готово». Часто используется для отображения сообщения об ошибке, если пользователь ввёл неполные или некорректные данные.
- nextId() возвращает идентификатор следующей страницы. Полезно при создании нелинейных мастеров, которые допускают разные пути перемещения в зависимости от введённой пользователем информации.
- isComplete() вызывается для определения, следует ли разрешать нажатие кнопок «Далее» и/или «Готово». Если переопределена isComplete(), убедитесь также, что completeChanged() излучается всякий раз, когда состояние завершения изменяется.
Обычно кнопки «Далее» и «Готово» мастера взаимоисключают друг друга. Если isFinalPage() возвращает true, доступна кнопка «Готово»; в противном случае — кнопка «Далее». По умолчанию isFinalPage() истинно только в том случае, когда nextId() возвращает -1. Если требуется отобразить кнопки «Далее» и «Готово» одновременно для страницы (разрешая пользователю выполнить «раннее завершение»), вызовите setFinalPage(true) на этой странице. Для мастеров, поддерживающих раннее завершение, возможно, также потребуется установить опции HaveNextButtonOnLastPage и HaveFinishButtonOnEarlyPages мастера.
Во многих мастерах содержимое одной страницы может влиять на значения по умолчанию для полей следующей страницы. Для облегчения взаимодействия между страницами QWizard поддерживает «механизм полей», который позволяет регистрировать поле (например, QLineEdit) на странице и получать доступ к его значению с любой страницы. Поля глобальны для всего мастера и позволяют любой странице получить доступ к информации, сохранённой другой страницей, без необходимости размещения всей логики в QWizard или явного знания страниц друг о друге. Поля регистрируются с помощью registerField() и могут быть получены в любое время с помощью field() и setField().
См. также QWizard, Пример мастера классов и Пример мастера лицензий.
Документация свойств
subTitle : QString
Это свойство содержит подзаголовок страницы.
Подзаголовок отображается в QWizard между заголовком и собственно страницей. Подзаголовки необязательны. В стилях ClassicStyle и ModernStyle использование подзаголовков необходимо для отображения заголовка. В стиле MacStyle подзаголовок отображается как метка текста непосредственно над собственно страницей.
Подзаголовок может быть обычным текстом или HTML в зависимости от значения свойства QWizard::subTitleFormat.
По умолчанию это свойство содержит пустую строку.
Функции доступа:
| QString | subTitle() const |
| void | setSubTitle(const QString &subTitle) |
См. также title, QWizard::IgnoreSubTitles и Элементы страницы мастера.
title : QString
Это свойство содержит заголовок страницы.
Заголовок отображается в QWizard над собственно страницей. У всех страниц должен быть заголовок.
Заголовок может быть обычным текстом или HTML в зависимости от значения свойства QWizard::titleFormat.
По умолчанию это свойство содержит пустую строку.
Функции доступа:
| QString | title() const |
| void | setTitle(const QString &title) |
См. также subTitle и Элементы страницы мастера.
Документация по функциям-членам
QWizardPage::QWizardPage(QWidget *parent = Q_NULLPTR)
Конструирует страницу мастера с заданным parent.
Когда страница вставляется в мастер с помощью QWizard::addPage() или QWizard::setPage(), родитель автоматически устанавливается в мастер.
См. также wizard().
QWizardPage::~QWizardPage()
Деструктор.
QString QWizardPage::buttonText(QWizard::WizardButton which) const
Возвращает текст на кнопке which на этой странице.
Если текст был задан с помощью setButtonText(), возвращается этот текст. В противном случае, если текст был задан с помощью QWizard::setButtonText(), возвращается этот текст.
По умолчанию текст на кнопках зависит от QWizard::wizardStyle. Например, на macOS кнопка Далее называется Продолжить.
См. также setButtonText(), QWizard::buttonText() и QWizard::setButtonText().
void QWizardPage::cleanupPage()
Эта виртуальная функция вызывается QWizard::cleanupPage() при переходе пользователя на другую страницу щелчком по кнопке Назад (если не установлен параметр QWizard::IndependentPages).
Реализация по умолчанию сбрасывает поля страницы до их исходных значений (значений, которые у них были до вызова initializePage()).
См. также QWizard::cleanupPage(), initializePage() и QWizard::IndependentPages.
void QWizardPage::completeChanged()
Этот сигнал излучается всякий раз, когда состояние завершения страницы (т.е. значение isComplete()) изменяется.
Если вы переопределяете isComplete(), убедитесь, что излучаете completeChanged(), когда значение isComplete() изменяется, чтобы убедиться, что QWizard обновляет состояние своих кнопок.
См. также isComplete().
QVariant QWizardPage::field(const QString &name) const
Возвращает значение поля с именем name.
Эта функция может использоваться для доступа к полям на любой странице мастера. Она эквивалентна вызову wizard()->field(name).
Пример:
См. также QWizard::field(), setField() и registerField().
void QWizardPage::initializePage()
Эта виртуальная функция вызывается QWizard::initializePage() для подготовки страницы непосредственно перед ее отображением, как результат вызова QWizard::restart(), или как результат нажатия пользователем на Далее. (Однако, если установлен параметр QWizard::IndependentPages, эта функция вызывается только при первом отображении страницы.)
Переопределяя эту функцию, вы можете гарантировать, что поля страницы должным образом инициализированы на основе полей с предыдущих страниц. Например:
Реализация по умолчанию ничего не делает.
См. также QWizard::initializePage(), cleanupPage() и QWizard::IndependentPages.
bool QWizardPage::isCommitPage() const
Возвращает true если эта страница является страницей подтверждения; в противном случае возвращает false.
См. также setCommitPage().
bool QWizardPage::isComplete() const
Эта виртуальная функция вызывается QWizard для определения, должны ли кнопки Далее или Готово быть включены или отключены.
Реализация по умолчанию возвращает true если все обязательные поля заполнены; в противном случае возвращает false.
Если вы переопределяете эту функцию, убедитесь, что излучаете completeChanged(), в остальной части своей реализации, всякий раз, когда значение isComplete() изменяется. Это гарантирует, что QWizard обновляет состояние своих кнопок. Пример переопределения доступен здесь.
См. также completeChanged() и isFinalPage().
bool QWizardPage::isFinalPage() const
Эта функция вызывается QWizard для определения, должна ли кнопка Готово отображаться для этой страницы или нет.
По умолчанию она возвращает true если нет следующей страницы (т.е. nextId() возвращает -1); в противном случае она возвращает false.
Явно вызвав setFinalPage(true), вы можете позволить пользователю выполнить "раннее завершение".
См. также isComplete() и QWizard::HaveFinishButtonOnEarlyPages.
int QWizardPage::nextId() const
Эта виртуальная функция вызывается QWizard::nextId() для определения, какую страницу отображать при нажатии пользователем на кнопку Далее.
Значение возврата — идентификатор следующей страницы или -1, если следующей страницы нет.
По умолчанию эта функция возвращает наименьший идентификатор, больший, чем идентификатор текущей страницы, или -1, если такого идентификатора нет.
Переопределяя эту функцию, вы можете указать динамический порядок страниц. Например:
См. также QWizard::nextId().
QPixmap QWizardPage::pixmap(QWizard::WizardPixmap which) const
Возвращает пиктограмму, установленную для роли which.
Пиктограммы также могут быть установлены для всего мастера с помощью QWizard::setPixmap(), в этом случае они применяются ко всем страницам, которые не задают свою пиктограмму.
См. также setPixmap(), QWizard::pixmap() и Элементы страницы мастера.
void QWizardPage::registerField(const QString &name, QWidget *widget, const char *property = Q_NULLPTR, const char *changedSignal = Q_NULLPTR)
Создает поле с именем name, связанное с заданным property заданного widget. После этого это свойство становится доступным с помощью field() и setField().
Поля глобальны для всего мастера и упрощают доступ любой отдельной странице к информации, хранящейся на другой странице, без необходимости размещать всю логику в QWizard или явного указания страницам друг о друге.
Если name оканчивается звездочкой (*), поле является обязательным. Когда на странице есть обязательные поля, кнопки Далее и/или Готово активируются только при заполнении всех обязательных полей. Для этого необходимо указать changedSignal, чтобы сообщить QWizard о необходимости повторной проверки значения, хранящегося в обязательном поле.
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() |
Вы можете использовать QWizard::setDefaultProperty() для добавления записей в эту таблицу или для переопределения существующих записей.
Для того, чтобы считать поле «заполненным», QWizard просто проверяет, что его текущее значение не равно его исходному значению (значению, которое оно имело до вызова initializePage()). Для QLineEdit также проверяется, что hasAcceptableInput() возвращает true, чтобы учесть любой валидатор или маску.
QWizard механизм обязательных полей предоставляется для удобства. Его можно обойти, переопределив QWizardPage::isComplete().
См. также field(), setField() и QWizard::setDefaultProperty().
void QWizardPage::setButtonText(QWizard::WizardButton which, const QString &text)
Устанавливает текст на кнопке which в text на этой странице.
По умолчанию, текст на кнопках зависит от QWizard::wizardStyle, но может быть переопределён для всего мастера с помощью QWizard::setButtonText().
См. также buttonText(), QWizard::setButtonText() и QWizard::buttonText().
void QWizardPage::setCommitPage(bool commitPage)
Устанавливает эту страницу как страницу подтверждения, если commitPage истинно; в противном случае, устанавливает её как обычную страницу.
Страница подтверждения — это страница, представляющая действие, которое нельзя отменить, нажав Назад или Отмена.
Кнопка Подтвердить заменяет кнопку Далее на странице подтверждения. Нажатие этой кнопки просто вызывает QWizard::next(), точно так же, как нажатие Далее.
Страница, введённая непосредственно со страницы подтверждения, имеет отключенную кнопку Назад.
См. также isCommitPage().
[protected] void QWizardPage::setField(const QString &name, const QVariant &value)
Устанавливает значение поля с именем name на value.
Эта функция может использоваться для установки полей на любой странице мастера. Она эквивалентна вызову wizard()->setField(name, value).
См. также QWizard::setField(), field() и registerField().
void QWizardPage::setFinalPage(bool finalPage)
Явно устанавливает эту страницу как конечную, если finalPage истинно.
После вызова setFinalPage(true), isFinalPage() возвращает true и кнопка Готово отображается (и активирована, если isComplete() возвращает true).
После вызова setFinalPage(false), isFinalPage() возвращает true если nextId() возвращает -1; в противном случае, она возвращает false.
См. также isFinalPage(), isComplete() и QWizard::HaveFinishButtonOnEarlyPages.
void QWizardPage::setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)
Устанавливает растровое изображение для роли which на pixmap.
Растровые изображения используются QWizard при отображении страницы. Какие растровые изображения фактически используются, зависит от стиля мастера.
Растровые изображения также могут быть установлены для всего мастера с помощью QWizard::setPixmap(), в этом случае они применяются для всех страниц, которые не задают растровое изображение.
См. также pixmap(), QWizard::setPixmap() и Элементы страницы мастера.
[virtual] bool QWizardPage::validatePage()
Эта виртуальная функция вызывается QWizard::validateCurrentPage() при нажатии пользователем Далее или Готово для выполнения некоторой последней проверки. Если она возвращает true, следующая страница отображается (или мастер завершается); в противном случае, текущая страница остается открытой.
По умолчанию, реализация возвращает true.
Когда это возможно, обычно лучше отключать кнопку Далее или Готово (указав обязательные поля или переопределив isComplete()), чем переопределять validatePage().
См. также QWizard::validateCurrentPage() и isComplete().
[protected] QWizard *QWizardPage::wizard() const
Возвращает мастера, связанного с этой страницей, или 0, если эта страница ещё не была вставлена в QWizard.
См. также QWizard::addPage() и QWizard::setPage().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qwizardpage.html