Класс QWizard
Класс QWizard предоставляет фреймворк для создания мастеров. Подробнее...
| Заголовок: | #include <QWizard> |
| qmake: | QT += widgets |
| С тех пор: | Qt 4.3 |
| Наследует: | QDialog |
Этот класс был представлен в Qt 4.3.
Открытые типы
| Перечисление | WizardButton { КнопкаНазад, КнопкаВперед, КнопкаПодтверждения, КнопкаЗавершения, КнопкаОтмены, …, КнопкаРастяжения } |
| Перечисление | WizardOption { НезависимыеСтраницы, ИгнорироватьПодзаголовки, РасширеннаяМаркировкаИзображения, НетКнопкиПоУмолчанию, НетКнопкиНазадНаПервойСтранице, …, НетКнопкиОтменыНаПоследнейСтранице } |
| Флаги | WizardOptions |
| Перечисление | WizardPixmap { ИзображениеМаркировки, ИзображениеЛоготипа, ИзображениеБаннера, ИзображениеФона } |
| Перечисление | WizardStyle { КлассическийСтиль, СовременныйСтиль, СтильMac, СтильAero } |
Свойства
|
Общие функции
| 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 |
Подробное описание
Мастер (также называется помощником на macOS) — это специальный тип диалогового окна ввода, состоящий из последовательности страниц. Цель мастера — поэтапно направить пользователя через процесс. Мастера полезны для сложных или редких задач, которые пользователи могут посчитать сложными для обучения.
QWizard наследуется от QDialog и представляет собой мастер. Каждая страница — это QWizardPage (подкласс QWidget). Для создания собственных мастеров можно использовать эти классы напрямую или наследоваться от них для большего контроля.
Темы:
Пример
Следующий пример демонстрирует, как создавать страницы мастера и добавлять их в мастер. Для более сложных примеров см. Класс Мастер и Лицензионный Мастер.
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("qtbase_");
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 со стандартными дочерними виджетами (QLabel, QLineEdit и т. д.).
Если стиль мастера MacStyle, страница выглядит совершенно по-другому:
Водяные знаки, значки баннера и логотипа игнорируются стилем MacStyle. Если установлен BackgroundPixmap, он используется в качестве фона мастера; в противном случае используется изображение по умолчанию «помощник».
Заголовок и подзаголовок устанавливаются путем вызова QWizardPage::setTitle() и QWizardPage::setSubTitle() на отдельных страницах. Они могут быть простым текстом или HTML (см. titleFormat и subTitleFormat). Значки можно установить глобально для всего мастера с помощью setPixmap() или на каждой странице с помощью QWizardPage::setPixmap().
Регистрация и использование полей
Во многих мастерах содержимое страницы может влиять на значения полей следующей страницы по умолчанию. Чтобы упростить общение между страницами, QWizard поддерживает механизм «поля», который позволяет регистрировать поле (например, QLineEdit) на странице и получать доступ к его значению с любой страницы. Также можно указать обязательные поля (т. е. поля, которые должны быть заполнены, прежде чем пользователь сможет перейти к следующей странице).
Для регистрации поля вызовите QWizardPage::registerField() поле. Например:
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, отображается следующая страница (или мастер завершает работу); в противном случае текущая страница остаётся.
Создание линейных мастеров
Большинство мастеров имеют линейную структуру, с первой страницей, за которой следует вторая и так далее до последней страницы. Примером такого мастера является пример Мастера классов. Мастера с линейной структурой в 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. Эти идентификаторы обычно определяются с помощью перечисления. Например:
class LicenseWizard : public QWizard
{
...
enum { Page_Intro, Page_Evaluate, Page_Register, Page_Details,
Page_Conclusion };
...
}; Страницы добавляются с помощью setPage(), который принимает идентификатор и экземпляр 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 — это typedef для 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 для Embedded 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().
[slot] void QWizard::next()
Переходит к следующей странице.
Это эквивалентно нажатию кнопки Далее или Применить.
См. также nextId(), back(), accept(), reject() и restart().
[signal] void QWizard::pageAdded(int id)
Этот сигнал излучается всякий раз, когда страница добавляется к мастер-диалогу. Идентификатор id страницы передаётся в качестве параметра.
Эта функция была добавлена в Qt 4.7.
См. также addPage(), setPage() и startId().
[signal] void QWizard::pageRemoved(int id)
Этот сигнал излучается всякий раз, когда страница удаляется из мастер-диалога. Идентификатор id страницы передаётся в качестве параметра.
Эта функция была добавлена в Qt 4.7.
См. также removePage() и startId().
[slot] void QWizard::restart()
Перезапускает мастер-диалог с начальной страницы. Эта функция вызывается автоматически при отображении мастер-диалога.
См. также startId().
[virtual] QWizard::~QWizard()
Удаляет мастер-диалог и его страницы, освобождая выделенные ресурсы.
int QWizard::addPage(QWizardPage *page)
Добавляет указанную страницу в мастер-диалог и возвращает идентификатор страницы.
Идентификатор гарантированно больше, чем любой другой идентификатор в 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 для определения страницы, которую нужно отобразить при нажатии пользователем кнопки Далее.
Возвращаемое значение — идентификатор следующей страницы или -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 версии 10.13 и более ранних.
См. также 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().
См. также 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 при отображении страницы. Какие пикчеры фактически используются, зависит от стиля мастер-диалога.
Пикчеры также могут быть установлены для конкретной страницы с помощью QWizardPage::setPixmap().
См. также pixmap(), QWizardPage::setPixmap() и Элементы страницы мастер-диалога.
void QWizard::setSideWidget(QWidget *widget)
Устанавливает заданный widget для отображения слева от мастер-диалога. Для стилей, которые используют пикчер WatermarkPixmap (ClassicStyle и ModernStyle), виджет отображается поверх водяного знака, для других стилей или когда водяной знак не предоставлен, виджет отображается слева от мастер-диалога.
Передача 0 скрывает боковой виджет.
Когда widget не nullptr мастер-диалог меняет его родителя.
Любой предыдущий боковой виджет скрывается.
Вы можете вызывать setSideWidget() с тем же виджетом в разное время.
Все виджеты, установленные здесь, будут удалены мастер-диалогом при его уничтожении, если вы отдельно не измените родителя виджета после установки другого бокового виджета (или nullptr).
По умолчанию боковой виджет отсутствует.
Эта функция была добавлена в Qt 4.7.
См. также sideWidget().
void QWizard::setVisible(bool visible)
Переопределяет: QDialog::setVisible(bool visible).
QWidget *QWizard::sideWidget() const
Возвращает виджет слева от мастер-диалога или nullptr.
По умолчанию боковой виджет отсутствует.
Эта функция была добавлена в Qt 4.7.
См. также setSideWidget().
QSize QWizard::sizeHint() const
Переопределяет: QDialog::sizeHint() const.
bool QWizard::testOption(QWizard::WizardOption option) const
Возвращает true , если заданная опция option включена; в противном случае, возвращает false.
См. также options, setOption() и setWizardStyle().
bool QWizard::validateCurrentPage()
Эта виртуальная функция вызывается QWizard при нажатии пользователем кнопки Далее или Готово для выполнения некоторой последней проверки. Если она возвращает true, отображается следующая страница (или мастер-диалог завершается); в противном случае, текущая страница остается.
Реализация по умолчанию вызывает QWizardPage::validatePage() на странице currentPage().
Когда это возможно, обычно лучше отключить кнопку Далее или Готово (указав обязательные поля или переопределив QWizardPage::isComplete()) вместо переопределения validateCurrentPage().
См. также QWizardPage::validatePage() и currentPage().
QList<int> QWizard::visitedPages() const
Возвращает список идентификаторов посещённых страниц в порядке их посещения.
Нажатие Назад снова отмечает текущую страницу как «непосещённую».
См. также hasVisitedPage().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qwizard.html