Класс QWizardPage
Класс QWizardPage является базовым классом для страниц мастера. Подробнее...
| Заголовок: | #include <QWizardPage> |
| qmake: | QT += widgets |
| С момента: | Qt 4.3 |
| Наследует: | QWidget |
Этот класс был представлен в Qt 4.3.
Свойства
Открытые функции
| QWizardPage(QWidget *parent = nullptr) | |
| virtual | ~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() |
Сигналы
| void | completeChanged() |
Защищённые функции
| QVariant | field(const QString &name) const |
| void | registerField(const QString &name, QWidget *widget, const char *property = nullptr, const char *changedSignal = nullptr) |
| void | setField(const QString &name, const QVariant &value) |
| QWizard * | wizard() const |
Подробное описание
QWizard представляет собой мастера. Каждая страница — это QWizardPage. При создании собственных мастеров вы можете использовать QWizardPage напрямую или наследовать от него для большего контроля.
Страница имеет следующие атрибуты, которые отображаются QWizard: заголовок (title), подзаголовок (subTitle) и набор пиктограмм (set of pixmaps). Подробнее см. Элементы страницы мастера. После добавления страницы в мастер (с помощью QWizard::addPage() или QWizard::setPage()), wizard() возвращает указатель на связанный объект QWizard.
Страница предоставляет пять виртуальных функций, которые можно переопределить для обеспечения пользовательского поведения:
- initializePage() вызывается для инициализации содержимого страницы, когда пользователь нажимает кнопку Далее мастера. Если вы хотите получить значения по умолчанию страницы из введённых пользователем на предыдущих страницах, переопределите эту функцию.
- cleanupPage() вызывается для сброса содержимого страницы, когда пользователь нажимает кнопку Назад мастера.
- validatePage() валидирует страницу, когда пользователь нажимает Далее или Готово. Часто используется для отображения сообщения об ошибке, если пользователь ввёл неполную или недопустимую информацию.
- nextId() возвращает идентификатор следующей страницы. Полезно при создании нелинейных мастеров, которые позволяют использовать разные пути перехода, основанные на информации, предоставленной пользователем.
- isComplete() вызывается для определения того, следует ли разрешить кнопки Далее и/или Готово. Если вы переопределяете isComplete(), убедитесь также, что completeChanged() испускается всякий раз, когда состояние завершённости изменяется.
Обычно кнопки Далее и Готово мастера являются взаимно исключающими. Если isFinalPage() возвращает true, доступна кнопка Готово; в противном случае доступна кнопка Далее. По умолчанию isFinalPage() является true только тогда, когда 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 = nullptr)
Создаёт страницу мастера с заданным parent.
Когда страница вставляется в мастера с помощью QWizard::addPage() или QWizard::setPage(), родительский элемент автоматически устанавливается как мастер.
См. также wizard().
[signal] void QWizardPage::completeChanged()
Этот сигнал испускается всякий раз, когда состояние завершения страницы (т. е., значение isComplete()) изменяется.
Если вы переопределяете isComplete(), убедитесь, что испускаете completeChanged(), всякий раз, когда значение isComplete() изменяется, чтобы гарантировать, что QWizard обновляет состояние кнопок «Включено» или «Отключено».
См. также isComplete().
[virtual] QWizardPage::~QWizardPage()
Деструктор.
QString QWizardPage::buttonText(QWizard::WizardButton which) const
Возвращает текст кнопки which на этой странице.
Если текст был задан с помощью setButtonText(), возвращается этот текст. В противном случае, если текст был задан с помощью QWizard::setButtonText(), возвращается этот текст.
По умолчанию текст на кнопках зависит от QWizard::wizardStyle. Например, в macOS кнопка «Далее» называется «Продолжить».
См. также setButtonText(), QWizard::buttonText() и QWizard::setButtonText().
[virtual] void QWizardPage::cleanupPage()
Эта виртуальная функция вызывается функцией QWizard::cleanupPage() при переходе пользователя на другую страницу нажатием кнопки «Назад» (если не установлен параметр QWizard::IndependentPages).
Реализация по умолчанию сбрасывает поля страницы до их исходных значений (значений, которые были до вызова initializePage()).
См. также QWizard::cleanupPage(), initializePage() и QWizard::IndependentPages.
[protected] QVariant QWizardPage::field(const QString &name) const
Возвращает значение поля с именем name.
Эта функция может использоваться для доступа к полям на любой странице мастера. Она эквивалентна вызову wizard()->field(name).
Пример:
void OutputFilesPage::initializePage()
{
QString className = field("className").toString();
headerLineEdit->setText(className.toLower() + ".h");
implementationLineEdit->setText(className.toLower() + ".cpp");
outputDirLineEdit->setText(QDir::toNativeSeparators(QDir::tempPath()));
} См. также QWizard::field(), setField() и registerField().
[virtual] void QWizardPage::initializePage()
Эта виртуальная функция вызывается функцией QWizard::initializePage() для подготовки страницы перед её отображением, либо в результате вызова QWizard::restart(), либо в результате нажатия пользователем кнопки «Далее». (Однако, если установлен параметр QWizard::IndependentPages, эта функция вызывается только в первый раз при отображении страницы.)
Переопределив эту функцию, вы можете обеспечить надлежащую инициализацию полей страницы на основе полей с предыдущих страниц. Например:
void OutputFilesPage::initializePage()
{
QString className = field("className").toString();
headerLineEdit->setText(className.toLower() + ".h");
implementationLineEdit->setText(className.toLower() + ".cpp");
outputDirLineEdit->setText(QDir::toNativeSeparators(QDir::tempPath()));
} Реализация по умолчанию ничего не делает.
См. также QWizard::initializePage(), cleanupPage() и QWizard::IndependentPages.
bool QWizardPage::isCommitPage() const
Возвращает true, если эта страница является страницей подтверждения; в противном случае возвращает false.
См. также setCommitPage().
[virtual] 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.
[virtual] int QWizardPage::nextId() const
Эта виртуальная функция вызывается функцией QWizard::nextId() для определения, какую страницу отобразить, когда пользователь нажмёт кнопку «Далее».
Возвращаемое значение — идентификатор следующей страницы или -1, если страница отсутствует.
По умолчанию эта функция возвращает наименьший идентификатор, больший, чем идентификатор текущей страницы, или -1, если такого идентификатора нет.
Переопределив эту функцию, можно указать динамический порядок страниц. Например:
int IntroPage::nextId() const
{
if (evaluateRadioButton->isChecked()) {
return LicenseWizard::Page_Evaluate;
} else {
return LicenseWizard::Page_Register;
}
} См. также QWizard::nextId().
QPixmap QWizardPage::pixmap(QWizard::WizardPixmap which) const
Возвращает пиктограмму, установленную для роли which.
Пиктограммы также могут быть установлены для всего мастера с помощью QWizard::setPixmap(), в этом случае они применяются ко всем страницам, которые не задали свою пиктограмму.
См. также setPixmap(), QWizard::pixmap() и Элементы страницы мастера.
[protected] void QWizardPage::registerField(const QString &name, QWidget *widget, const char *property = nullptr, const char *changedSignal = 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's механизм обязательных полей предоставлен для удобства. Его можно обойти, переопределив 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 имеет значение true; в противном случае устанавливает её как обычную страницу.
Страница подтверждения — это страница, представляющая действие, которое нельзя отменить, нажав Назад или Отмена.
На странице подтверждения кнопка Далее заменяется кнопкой Подтвердить. Нажатие этой кнопки просто вызывает 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 имеет значение true.
После вызова 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
Возвращает связанный с этой страницей мастер, или nullptr если эта страница ещё не вставлена в QWizard.
См. также QWizard::addPage() и QWizard::setPage().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qwizardpage.html