Класс QWizard
Класс QWizard предоставляет основу для создания мастеров. Подробнее...
| Заголовок: | #include <QWizard> |
| qmake: | QT += widgets |
| С тех пор: | Qt 4.3 |
| Наследует: | QDialog |
Общедоступные типы
| Перечисление | WizardButton { КнопкаНазад, КнопкаДалее, КнопкаПодтвердить, КнопкаЗавершить, ..., Растяжка } |
| Перечисление | WizardOption { НезависимыеСтраницы, ИгнорироватьПодзаголовки, РасширенноеWatermarkPixmap, НетКнопкиПоУмолчанию, ..., НетКнопкиОтменыНаПоследнейСтранице } |
| Флаги | WizardOptions |
| Перечисление | WizardPixmap { WatermarkPixmap, LogoPixmap, BannerPixmap, BackgroundPixmap } |
| Перечисление | WizardStyle { КлассическийСтиль, СовременныйСтиль, СтильMac, СтильAero } |
Свойства
|
- 2 свойства унаследованы от QDialog
- 59 свойств унаследовано от QWidget
- 1 свойство унаследовано от QObject
Публичные функции
| QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = ...) | |
| 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 |
- 8 публичных функций унаследовано от QDialog
- 214 публичных функций унаследовано от QWidget
- 31 публичная функция унаследована от QObject
- 14 публичных функций унаследовано от QPaintDevice
Публичные слоты
| void | назад() |
| void | следующий() |
| void | перезапустить() |
- 5 общедоступных слотов унаследовано от QDialog
- 19 общедоступных слотов унаследовано от QWidget
- 1 общедоступный слот унаследовано от QObject
Сигналы
| void | currentIdChanged(int id) |
| void | customButtonClicked(int which) |
| void | запросСправки() |
| void | pageAdded(int id) |
| void | pageRemoved(int id) |
- 3 сигнала унаследовано от QDialog
- 3 сигнала унаследовано от QWidget
- 2 сигнала унаследовано от QObject
Статические общедоступные члены
| const QMetaObject | staticMetaObject |
- 5 статических общедоступных членов унаследовано от QWidget
- 9 статических общедоступных членов унаследовано от QObject
Защищенные функции
| virtual void | cleanupPage(int id) |
| virtual void | initializePage(int id) |
Переопределённые защищенные функции
| virtual void | завершить(int result) override |
| virtual bool | событие(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 |
- 6 защищенных функций унаследовано от QDialog
- 35 защищенных функций унаследовано от QWidget
- 9 защищенных функций унаследовано от QObject
- 1 защищенная функция унаследовано от QPaintDevice
Дополнительные унаследованные члены
- 1 защищенный слот унаследовано от QWidget
Подробное описание
Класс QWizard предоставляет основу для создания мастеров.
Мастер (также называемый помощником на 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. В любой момент времени отображается только одна страница. У страницы есть следующие атрибуты:
- Заголовок .
- Подзаголовок .
- Набор растровых изображений, которые могут или не могут учитываться в зависимости от стиля мастера:
- 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's механизм обязательных полей предоставляется для удобства. Более мощная (но и более сложная) альтернатива - переопределить QWizardPage::isComplete() и генерировать сигнал QWizardPage::completeChanged() всякий раз, когда страница становится полной или неполной.
Состояние включения/выключения кнопок Далее и/или Готово - один из способов проверки вводимых данных пользователя. Другой способ - переопределить validateCurrentPage() (или QWizardPage::validatePage()) для проведения проверки в последний момент (и отображения сообщения об ошибке, если пользователь ввёл неполную или неверную информацию). Если функция возвращает true, отображается следующая страница (или мастер-окно завершается); в противном случае текущая страница остаётся открытой.
Создание линейных мастер-окон
Большинство мастер-окон имеют линейную структуру, с первой страницей, за которой следует вторая и так далее до последней страницы. Пример Мастера классов является таким мастер-окном. С QWizard, линейные мастер-окна создаются путём создания QWizardPages и вставки их с помощью 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 = ...)
Создаёт мастера с заданным parent и флагами окна flags.
См. также parent() и windowFlags().
[virtual] QWizard::~QWizard()
Уничтожает мастера и его страницы, освобождая выделенные ресурсы.
int QWizard::addPage(QWizardPage *page)
Добавляет заданную page к мастеру и возвращает ID страницы.
ID гарантированно будет больше любого другого ID в QWizard на данный момент.
См. также setPage(), page() и pageAdded().
[slot] void QWizard::back()
Переходит к предыдущей странице.
Эквивалентно нажатию кнопки Назад.
См. также next(), accept(), reject() и restart().
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().
[signal] void QWizard::currentIdChanged(int id)
Этот сигнал испускается при изменении текущей страницы, с новым текущим id.
Примечание: Сигнал уведомления для свойства currentId.
См. также currentId() и currentPage().
QWizardPage *QWizard::currentPage() const
Возвращает указатель на текущую страницу или 0, если текущей страницы нет (например, перед отображением мастера).
Эквивалентно вызову page(currentId()).
См. также page(), currentId() и restart().
[signal] void QWizard::customButtonClicked(int which)
Этот сигнал испускается при нажатии пользователем пользовательской кнопки. which может быть CustomButton1, CustomButton2 или CustomButton3.
По умолчанию пользовательская кнопка не отображается. Вызовите setOption() с HaveCustomButton1, HaveCustomButton2 или HaveCustomButton3, чтобы отобразить её, и используйте setButtonText() или setButton() для её настройки.
См. также helpRequested().
END_OF_DOCUMENT_MARKER
[override virtual protected] void QWizard::done(int result)
Реализовано повторно из QDialog::done().
[override virtual protected] bool QWizard::event(QEvent *event)
Реализовано повторно из QWidget::event().
QVariant QWizard::field(const QString &name) const
Возвращает значение поля с именем name.
Эта функция может использоваться для доступа к полям на любой странице мастера.
См. также QWizardPage::registerField(), QWizardPage::field() и setField().
bool QWizard::hasVisitedPage(int id) const
Возвращает true если история посещения страниц содержит страницу id; в противном случае возвращает false.
Нажатие кнопки Назад помечает текущую страницу как "не посещенную" снова.
См. также visitedPages().
[signal] 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().
[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().
[slot] void QWizard::next()
Переходит на следующую страницу.
Это эквивалентно нажатию кнопки Далее или Применить.
См. также nextId(), back(), accept(), reject() и restart().
[virtual] int QWizard::nextId() const
Эта виртуальная функция вызывается QWizard, чтобы определить, какую страницу отобразить при нажатии пользователем кнопки Далее.
Возвращаемое значение — ID следующей страницы, или -1, если следующей страницы нет.
По умолчанию выполняется вызов QWizardPage::nextId() на странице currentPage.
Переопределяя эту функцию, можно указать динамический порядок страниц.
См. также QWizardPage::nextId() и currentPage().
QWizardPage *QWizard::page(int id) const
Возвращает страницу с заданным id, или 0, если такой страницы нет.
См. также addPage() и setPage().
[signal] void QWizard::pageAdded(int id)
Этот сигнал испускается всякий раз, когда страница добавляется в мастер. В качестве параметра передаётся id страницы.
Эта функция была введена в Qt 4.7.
См. также addPage(), setPage() и startId().
QList<int> QWizard::pageIds() const
Возвращает список идентификаторов страниц.
Эта функция была введена в Qt 4.5.
[signal] void QWizard::pageRemoved(int id)
Этот сигнал испускается всякий раз, когда страница удаляется из мастера. В качестве параметра передаётся id страницы.
Эта функция была введена в Qt 4.7.
См. также removePage() и startId().
[override virtual protected] void QWizard::paintEvent(QPaintEvent *event)
Реализовано повторно из QWidget::paintEvent().
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().
[slot] void QWizard::restart()
Перезапускает мастер с начальной страницы. Эта функция вызывается автоматически при отображении мастера.
См. также startId().
void QWizard::setButton(QWizard::WizardButton which, QAbstractButton *button)
Устанавливает кнопку, соответствующую роли which, на button.
Чтобы добавить дополнительные кнопки к мастеру (например, кнопку Печать), можно вызвать setButton() с CustomButton1 до CustomButton3 и сделать кнопки видимыми, используя параметры HaveCustomButton1 до HaveCustomButton3.
См. также button(), setButtonText(), setButtonLayout() и параметры.
void QWizard::setButtonLayout(const QList<QWizard::WizardButton> &layout)
Устанавливает порядок отображения кнопок в соответствии с layout, где layout — список кнопок WizardButton.
Расположение по умолчанию зависит от установленных параметров (например, HelpButtonOnRight). Вы можете вызвать эту функцию, если вам требуется больший контроль над расположением кнопок, чем предоставляет параметры.
Можно указать горизонтальные отступы в макете, используя 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 при отображении страницы. Какие именно пиктограммы будут использоваться, зависит от стиля мастера wizard style.
Пиктограммы также можно установить для определённой страницы с помощью QWizardPage::setPixmap().
См. также pixmap(), QWizardPage::setPixmap(), и Элементы страницы мастера.
void QWizard::setSideWidget(QWidget *widget)
Устанавливает заданный widget для отображения слева от мастера. Для стилей, которые используют WatermarkPixmap (ClassicStyle и ModernStyle), виджет отображается поверх водяного знака; для других стилей или когда водяной знак не предоставлен, виджет отображается слева от мастера.
Передача 0 скрывает боковой виджет.
Когда widget не равен 0, мастер меняет родителя виджета.
Любой предыдущий боковой виджет скрывается.
Вы можете вызывать setSideWidget() с одним и тем же виджетом в разное время.
Все виджеты, заданные здесь, будут удалены мастером при его уничтожении, если вы не измените родителя виджета после установки другого бокового виджета (или 0).
По умолчанию боковой виджет отсутствует.
Эта функция была добавлена в Qt 4.7.
См. также sideWidget().
void QWizard::setVisible(bool visible)
Переопределено из QDialog::setVisible().
QWidget *QWizard::sideWidget() const
Возвращает виджет слева от мастера или 0.
По умолчанию боковой виджет отсутствует.
Эта функция была добавлена в Qt 4.7.
См. также setSideWidget().
QSize QWizard::sizeHint() const
Переопределено из QDialog::sizeHint().
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.12/qwizard.html