Класс QWizard
Класс QWizard предоставляет фреймворк для мастеров. Подробнее...
| Заголовок: | #include <QWizard> |
| qmake: | QT += widgets |
| С версии: | Qt 4.3 |
| Наследует: | QDialog |
Этот класс был введен в Qt 4.3.
Открытые типы
| 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 } |
Свойства
|
Открытые функции
| QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
| 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 |
Открытые слоты
| void | back() |
| void | next() |
| void | restart() |
Сигналы
| void | currentIdChanged(int id) |
| void | customButtonClicked(int which) |
| void | helpRequested() |
| void | pageAdded(int id) |
| void | pageRemoved(int id) |
Protected Functions
| virtual void | cleanupPage(int id) |
| virtual void | initializePage(int id) |
Reimplemented Protected Functions
| 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 |
Detailed Description
Мастер (также называемый помощником на 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[])
{
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
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 поддерживает четыре варианта внешнего вида мастера:
Вы можете явно установить используемый вид с помощью 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); Элементы страницы мастера
Мастера состоят из последовательности QWizardPages. В любое время отображается только одна страница. У страницы есть следующие атрибуты:
- Заголовок 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 ¯o"));
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 и сигнал «изменения» (сигнал, который испускается при изменении свойства) в качестве третьего и четвертого аргументов; однако это не обязательно для наиболее распространенных виджетов Qt, таких как QLineEdit, QCheckBox и QComboBox, поскольку QWizard знает, какие свойства искать.
Если к имени добавляется звездочка (*) при регистрации свойства, поле является обязательным полем. Когда у страницы есть обязательные поля, кнопки Далее и/или Готово активируются только при заполнении всех обязательных полей.
Чтобы считать поле «заполненным», QWizard просто проверяет, что текущее значение поля не равно исходному значению (значению, которое было у него, когда вызывался метод initializePage()). Для подклассов QLineEdit и QAbstractSpinBox QWizard также проверяет, что hasAcceptableInput() возвращает true, чтобы учесть любой валидатор или маску.
QWizard механизм обязательных полей предоставляется для удобства. Более мощная (но и более громоздкая) альтернатива — переопределить метод QWizardPage::isComplete() и испускать сигнал QWizardPage::completeChanged() всякий раз, когда страница становится полной или неполной.
Состояние включения/выключения кнопок Далее и/или Готово — один из способов проверки пользовательского ввода. Другой способ — переопределить метод validateCurrentPage() (или QWizardPage::validatePage()) для выполнения проверки в последний момент (и отображения сообщения об ошибке, если пользователь ввёл неполную или некорректную информацию). Если функция возвращает true, отображается следующая страница (или мастер заканчивает работу); в противном случае текущая страница остаётся.
Создание линейных мастеров
Большинство мастеров имеют линейную структуру, начиная со страницы 1, затем страница 2 и так далее до последней страницы. Примером такого мастера является пример Мастера классов. В 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.
Создание нелинейных мастеров
Некоторые мастера более сложны, так как они позволяют разные пути обхода в зависимости от информации, предоставленной пользователем. Пример Мастера лицензий демонстрирует это. Он предоставляет пять страниц мастера; в зависимости от выбранных параметров, пользователь может перейти на разные страницы.
В сложных мастерах страницы идентифицируются по 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, Пример мастера классов и Пример мастера лицензий.
Документация по типу элементов-члена
перечисление 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().
перечисление QWizard::WizardOptionфлаги QWizard::WizardOptions
Это перечисление определяет различные параметры, которые влияют на внешний вид мастера.
| Константа | Значение | Описание |
|---|---|---|
QWizard::IndependentPages |
0x00000001 |
Страницы независимы друг от друга (т.е. не получают значения друг от друга). |
QWizard::IgnoreSubTitles |
0x00000002 |
Не отображать подзаголовки, даже если они установлены. |
QWizard::ExtendedWatermarkPixmap |
0x00000004 |
Расширить любой WatermarkPixmap до края окна. |
QWizard::NoDefaultButton |
0x00000008 |
Не устанавливать кнопку Далее или Готово в качестве кнопки по умолчанию диалога. |
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 — псевдоним для 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 для встраиваемой 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 = Qt::WindowFlags())
Конструирует мастера с заданным parent и флагами окна flags.
См. также parent() и windowFlags().
void QWizard::back()
Переходит к предыдущей странице.
Это эквивалентно нажатию кнопки Назад.
См. также next(), accept(), reject() и restart().
void QWizard::currentIdChanged(int id)
Этот сигнал генерируется при изменении текущей страницы с новым текущим id.
Примечание: Сигнал уведомления для свойства currentId.
См. также currentId() и currentPage().
void QWizard::customButtonClicked(int which)
Этот сигнал генерируется при нажатии пользователем пользовательской кнопки. which может быть CustomButton1, CustomButton2 или CustomButton3.
По умолчанию пользовательская кнопка не отображается. Вызовите setOption() с HaveCustomButton1, HaveCustomButton2 или HaveCustomButton3, чтобы отобразить её, и используйте setButtonText() или setButton() для её настройки.
См. также helpRequested().
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().
void QWizard::next()
Переходит к следующей странице.
Это эквивалентно нажатию кнопки Далее или Подтвердить.
См. также nextId(), back(), accept(), reject() и restart().
void QWizard::pageAdded(int id)
Этот сигнал генерируется всякий раз, когда страница добавляется в мастер. ID страницы передается в качестве параметра.
Эта функция была добавлена в Qt 4.7.
См. также addPage(), setPage() и startId().
void QWizard::pageRemoved(int id)
Этот сигнал генерируется всякий раз, когда страница удаляется из мастера. ID страницы передается в качестве параметра.
Эта функция была добавлена в Qt 4.7.
См. также removePage() и startId().
void QWizard::restart()
Перезапускает мастер на стартовой странице. Эта функция вызывается автоматически при отображении мастера.
См. также startId().
QWizard::~QWizard()
Уничтожает мастера и его страницы, освобождая выделенные ресурсы.
int QWizard::addPage(QWizardPage *page)
Добавляет заданную страницу к мастеру и возвращает ID страницы.
ID гарантированно будет больше, чем любой другой ID в QWizard до сих пор.
См. также setPage(), page() и pageAdded().
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() для страницы (id).
См. также QWizardPage::cleanupPage() и initializePage().
QWizardPage *QWizard::currentPage() const
Возвращает указатель на текущую страницу или nullptr если текущей страницы нет (например, до показа мастера).
Это эквивалентно вызову page(currentId()).
См. также page(), currentId() и restart().
[override virtual protected] void QWizard::done(int result)
Переопределяет: QDialog::done(int r).
[override virtual protected] bool QWizard::event(QEvent *event)
Переопределяет: QWidget::event(QEvent *event).
QVariant QWizard::field(const QString &name) const
Возвращает значение поля с именем name.
Этот метод может использоваться для доступа к полям на любой странице мастера.
См. также QWizardPage::registerField(), QWizardPage::field() и setField().
bool QWizard::hasVisitedPage(int id) const
Возвращает true если история посещений содержит страницу id; в противном случае возвращает false.
Нажатие Назад снова отмечает текущую страницу как «не посещённую».
См. также visitedPages().
[virtual protected] void QWizard::initializePage(int id)
Этот виртуальный метод вызывается QWizard для подготовки страницы id перед её отображением в результате вызова QWizard::restart() или в результате нажатия пользователем кнопки Далее. (Однако, если установлена опция QWizard::IndependentPages, этот метод вызывается только при первом отображении страницы.)
Переопределяя этот метод, вы можете гарантировать, что поля страницы правильно инициализированы на основе полей предыдущих страниц.
Реализация по умолчанию вызывает QWizardPage::initializePage() для страницы (id).
См. также QWizardPage::initializePage() и cleanupPage().
[override virtual protected] bool QWizard::nativeEvent(const QByteArray &eventType, void *message, long *result)
Переопределяет: QWidget::nativeEvent(const QByteArray &eventType, void *message, long *result).
[virtual] int QWizard::nextId() const
Этот виртуальный метод вызывается QWizard для определения страницы, которая должна быть показана, когда пользователь нажимает кнопку Далее.
Возвращаемое значение — ID следующей страницы, или -1, если следующей страницы нет.
Реализация по умолчанию вызывает QWizardPage::nextId() для currentPage().
Переопределяя этот метод, вы можете указать динамический порядок страниц.
См. также QWizardPage::nextId() и currentPage().
QWizardPage *QWizard::page(int id) const
Возвращает страницу с заданным id или nullptr если такой страницы нет.
См. также addPage() и setPage().
QList<int> QWizard::pageIds() const
Возвращает список идентификаторов страниц.
Этот метод был добавлен в Qt 4.5.
[override virtual protected] void QWizard::paintEvent(QPaintEvent *event)
Переопределяет: QWidget::paintEvent(QPaintEvent *event).
QPixmap QWizard::pixmap(QWizard::WizardPixmap which) const
Возвращает пиктограмму, установленную для роли which.
По умолчанию, единственная установленная пиктограмма — BackgroundPixmap на macOS.
См. также setPixmap(), QWizardPage::pixmap() и Элементы страницы мастера.
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(QResizeEvent *).
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().
END_OF_DOCUMENT_MARKERСм. также 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 равно true; в противном случае, сбрасывает заданный 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 при отображении страницы. Какие именно пиктограммы используются, зависит от стиля мастера wizard style.
Пиктограммы также могут быть установлены для определённой страницы с помощью QWizardPage::setPixmap().
См. также pixmap(), QWizardPage::setPixmap(), и Элементы страницы мастера.
void QWizard::setSideWidget(QWidget *widget)
Устанавливает указанный widget для отображения слева от мастера. Для стилей, использующих пиктограмму водяного знака WatermarkPixmap (ClassicStyle и ModernStyle), виджет отображается поверх водяного знака; для других стилей или при отсутствии водяного знака виджет отображается слева от мастера.
Передача 0 скрывает виджет.
Если widget не nullptr, мастер переродирует его.
Любой предыдущий виджет сбоку скрывается.
Вы можете вызывать setSideWidget() с тем же виджетом в разное время.
Все виджеты, установленные здесь, будут удалены мастером при его уничтожении, если вы не переродите виджет отдельно после установки другого виджета слева (или nullptr).
По умолчанию виджета слева нет.
Эта функция была добавлена в Qt 4.7.
См. также sideWidget().
[override virtual] void QWizard::setVisible(bool visible)
Переопределяет: QDialog::setVisible(bool visible).
QWidget *QWizard::sideWidget() const
Возвращает виджет слева от мастера или nullptr.
По умолчанию виджета слева нет.
Эта функция была добавлена в Qt 4.7.
См. также setSideWidget().
[override virtual] QSize QWizard::sizeHint() const
Переопределяет: QDialog::sizeHint() const.
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
Возвращает список ID посещённых страниц в порядке их посещения.
Нажатие Назад снова помечает текущую страницу как «не посещённую».
См. также hasVisitedPage().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qwizard.html