Класс QWizardPage
Класс QWizardPage является базовым классом для страниц мастера. Подробнее...
| Заголовок: | #include <QWizardPage> |
| qmake: | QT += widgets |
| С момента: | Qt 4.3 |
| Наследует: | QWidget |
Свойства
Открытые функции
| 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() |
- 214 открытых функций, унаследованных от QWidget
- 34 открытых функций, унаследованных от QObject
- 14 открытых функций, унаследованных от QPaintDevice
Сигналы
| 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 |
- 35 защищенных функций, унаследованных от QWidget
- 9 защищенных функций, унаследованных от QObject
- 1 защищенная функция, унаследованная от QPaintDevice
Дополнительные унаследованные члены
- 19 открытых слотов, унаследованных от QWidget
- 1 открытый слот, унаследованный от QObject
- 1 открытая переменная, унаследованная от QObject
- 5 статических открытых членов, унаследованных от QWidget
- 10 статических открытых членов, унаследованных от QObject
- 1 защищенный слот, унаследованный от QWidget
- 2 защищенных переменных, унаследованных от QObject
- 1 защищенный тип, унаследованный от QPaintDevice
Подробное описание
Класс QWizardPage является базовым классом для страниц мастера.
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() истинна только когда 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().
[virtual] QWizardPage::~QWizardPage()
Деструктор.
QString QWizardPage::buttonText(QWizard::WizardButton which) const
Возвращает текст кнопки which на этой странице.
Если текст был задан с помощью setButtonText(), возвращается этот текст. В противном случае, если текст был задан с помощью QWizard::setButtonText(), возвращается этот текст.
По умолчанию текст на кнопках зависит от QWizard::wizardStyle. Например, на macOS кнопка Next называется Continue.
См. также setButtonText(), QWizard::buttonText() и QWizard::setButtonText().
[virtual] void QWizardPage::cleanupPage()
Эта виртуальная функция вызывается QWizard::cleanupPage() при переходе пользователя на другую страницу с помощью кнопки Назад (если не установлено QWizard::IndependentPages).
Реализация по умолчанию сбрасывает поля страницы до их первоначальных значений (значений, которые у них были до вызова initializePage()).
См. также QWizard::cleanupPage(), initializePage() и QWizard::IndependentPages.
[signal] void QWizardPage::completeChanged()
Этот сигнал излучается всякий раз, когда состояние завершения страницы (т. е. значение isComplete()) изменяется.
Если вы переопределите isComplete(), убедитесь, что излучаете completeChanged() всякий раз, когда значение isComplete() изменяется, чтобы гарантировать, что QWizard обновляет состояние своих кнопок.
См. также isComplete().
[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() для определения, на какую страницу перейти, когда пользователь нажимает кнопку Далее.
Возвращаемое значение — ID следующей страницы или -1, если следующей страницы нет.
По умолчанию функция возвращает наименьший ID, больший, чем ID текущей страницы, или -1, если такого ID нет.
Переопределив эту функцию, вы можете указать динамический порядок страниц. Например:
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 предназначен для удобства. Его можно обойти, переопределив 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
Возвращает мастера, связанного с этой страницей, или 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.11/qwizardpage.html