Spec-Zone.ru › Qt 6.0

Класс QWizardPage

Класс QWizardPage является базовым классом для страниц мастера. Подробнее...

Заголовок: #include <QWizardPage>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследует: QWidget
  • Список всех членов, включая унаследованные

Свойства

  • subTitle : QString
  • title : QString

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

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() истинно только тогда, когда nextId() возвращает -1. Если вы хотите отобразить «Далее» и «Готово» одновременно для страницы (разрешая пользователю выполнить «раннее завершение»), вызовите setFinalPage(true) для этой страницы. Для мастеров, поддерживающих раннее завершение, также может потребоваться установить параметры HaveNextButtonOnLastPage и HaveFinishButtonOnEarlyPages для мастера.

Во многих мастерах содержимое страницы может влиять на значения по умолчанию полей следующей страницы. Чтобы упростить взаимодействие между страницами, QWizard поддерживает механизм «полей», позволяющий регистрировать поле (например, QLineEdit) на странице и получать доступ к его значению с любой страницы. Поля глобальны для всего мастера и позволяют любой странице получить доступ к информации, хранящейся на другой странице, без необходимости размещения всей логики в QWizard или явного знания страниц друг о друге. Поля регистрируются с помощью registerField() и могут быть получены в любой момент с помощью field() и setField().

См. также QWizard, Пример класса мастера и Пример мастера лицензий.

END_OF_DOCUMENT_MARKER

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

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

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(), и Элементы страницы мастера.

bool QWizardPage::validatePage()

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

Реализация по умолчанию возвращает true.

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

См. также QWizard::validateCurrentPage() и isComplete().

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-6.0/qwizardpage.html

Spec-Zone.ru

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