Класс QWizard
Класс QWizard предоставляет основу для создания мастеров. Подробнее...
| Заголовок: | #include <QWizard> |
| qmake: | QT += widgets |
| С тех пор: | Qt 4.3 |
| Наследует: | QDialog |
Открытые типы
| Перечисление | WizardButton { КнопкаНазад, КнопкаДалее, КнопкаПодтвердить, КнопкаЗакончить, ..., Растяжка } |
| Перечисление | WizardOption { НезависимыеСтраницы, ИгнорироватьПодзаголовки, РасширенныйВодянойЗнак, ОтсутствиеКнопкиПоУмолчанию, ..., ОтсутствиеКнопкиОтменыНаПоследнейСтранице } |
| Флаги | WizardOptions |
| Перечисление | WizardPixmap { ВодянойЗнак, Логотип, Баннер, Фон } |
| Перечисление | WizardStyle { КлассическийСтиль, СовременныйСтиль, СтильMac, СтильAero } |
Свойства
|
- 2 свойства унаследованы от QDialog
- 59 свойств унаследованы от QWidget
- 1 свойство унаследовано от QObject
Открытые функции
| QWizard(QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()) | |
| ~QWizard() | |
| int | addPage(QWizardPage *page) |
| QAbstractButton * | button(WizardButton which) const |
| QString | buttonText(WizardButton which) const |
| int | currentId() const |
| QWizardPage * | currentPage() const |
| QVariant | field(const QString &name) const |
| bool | hasVisitedPage(int id) const |
| virtual int | nextId() const |
| WizardOptions | options() const |
| QWizardPage * | page(int id) const |
| QList<int> | pageIds() const |
| QPixmap | pixmap(WizardPixmap which) const |
| void | removePage(int id) |
| void | setButton(WizardButton which, QAbstractButton *button) |
| void | setButtonLayout(const QList<WizardButton> &layout) |
| void | setButtonText(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(WizardOption option, bool on = true) |
| void | setOptions(WizardOptions options) |
| void | setPage(int id, QWizardPage *page) |
| void | setPixmap(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(WizardStyle style) |
| QWidget * | sideWidget() const |
| int | startId() const |
| Qt::TextFormat | subTitleFormat() const |
| bool | testOption(WizardOption option) const |
| Qt::TextFormat | titleFormat() const |
| virtual bool | validateCurrentPage() |
| QList<int> | visitedPages() const |
| WizardStyle | wizardStyle() const |
Переопределенные открытые функции
| virtual void | setVisible(bool visible) |
| virtual QSize | sizeHint() const |
- 8 открытых функций унаследовано от QDialog
- 214 открытых функций унаследовано от QWidget
- 32 открытых функций унаследовано от QObject
- 14 открытых функций унаследовано от QPaintDevice
Открытые слоты
| void | back() |
| void | next() |
| void | restart() |
- 5 общедоступных слотов унаследовано от QDialog
- 19 общедоступных слотов унаследовано от QWidget
- 1 общедоступный слот унаследовано от QObject
Сигналы
| void | currentIdChanged(int id) |
| void | customButtonClicked(int which) |
| void | helpRequested() |
| void | pageAdded(int id) |
| void | pageRemoved(int id) |
- 3 сигнала унаследовано от QDialog
- 3 сигнала унаследовано от QWidget
- 2 сигнала унаследовано от QObject
Защищённые функции
| virtual void | cleanupPage(int id) |
| virtual void | initializePage(int id) |
Переопределённые защищённые функции
| virtual void | done(int result) |
| virtual bool | event(QEvent *event) |
| virtual bool | nativeEvent(const QByteArray &eventType, void *message, long *result) |
| virtual void | paintEvent(QPaintEvent *event) |
| virtual void | resizeEvent(QResizeEvent *event) |
- 6 защищённых функций унаследовано от QDialog
- 35 защищённых функций унаследовано от QWidget
- 9 защищённых функций унаследовано от QObject
- 1 защищённая функция унаследовано от QPaintDevice
Дополнительные унаследованные члены
- 5 статических общедоступных членов унаследовано от QWidget
- 11 статических общедоступных членов унаследовано от QObject
- 1 защищённый слот унаследовано от QWidget
Подробное описание
Класс QWizard предоставляет фреймворк для создания магов.
Маг (также называется помощником на 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[])
{
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 и сигнал «changed» (сигнал, который испускается при изменении свойства) в качестве третьего и четвёртого аргументов; однако это не обязательно для самых распространённых виджетов Qt, таких как QLineEdit, QCheckBox и QComboBox, так как QWizard знает, какие свойства искать.
Если к имени при добавлении свойства добавляется звёздочка (*), поле является обязательным полем. Когда у страницы есть обязательные поля, кнопки Далее и/или Готово становятся активными только при заполнении всех обязательных полей.
Чтобы считать поле «заполненным», QWizard просто проверяет, что текущее значение поля не равно исходному значению (значению, которое оно имело при вызове initializePage()). Для QLineEdit и подклассов QAbstractSpinBox QWizard также проверяет, что hasAcceptableInput() возвращает true, чтобы учесть любой валидатор или маску.
QWizard's механизм обязательных полей предоставляется для удобства. Более мощная (но и более сложная) альтернатива — переопределить 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 — это 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 для встроенной Linux): ни одного.
Функции доступа:
| WizardOptions | options() const |
| void | setOptions(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 — по умолчанию во всех остальных случаях.
Функции доступа:
| WizardStyle | wizardStyle() const |
| void | setWizardStyle(WizardStyle style) |
См. также Внешний вид мастера и options.
Документация по членам-функциям
QWizard::QWizard(QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())
Конструирует мастера с заданным parent и флагами окна flags.
См. также parent() и windowFlags().
QWizard::~QWizard()
Удаляет мастера и его страницы, освобождая выделенные ресурсы.
int QWizard::addPage(QWizardPage *page)
Добавляет заданную page к мастеру и возвращает ID страницы.
Гарантируется, что ID будет больше любого другого ID в QWizard до сих пор.
См. также setPage(), page() и pageAdded().
void QWizard::back()
Переходит к предыдущей странице.
Эквивалентно нажатию кнопки Назад.
См. также next(), accept(), reject() и restart().
QAbstractButton *QWizard::button(WizardButton which) const
Возвращает кнопку, соответствующую роли which.
См. также setButton() и setButtonText().
QString QWizard::buttonText(WizardButton which) const
Возвращает текст на кнопке which.
Если текст был задан с помощью setButtonText(), возвращается этот текст.
По умолчанию текст на кнопках зависит от wizardStyle. Например, на macOS кнопка Далее называется Продолжить.
См. также button(), setButton(), setButtonText(), QWizardPage::buttonText() и QWizardPage::setButtonText().
void QWizard::cleanupPage(int id)
Эта виртуальная функция вызывается QWizard, чтобы очистить страницу id непосредственно перед тем, как пользователь покинет её, нажав Назад (если параметр QWizard::IndependentPages не установлен).
Реализация по умолчанию вызывает QWizardPage::cleanupPage() на странице(id).
См. также QWizardPage::cleanupPage() и initializePage().
void QWizard::currentIdChanged(int id)
Этот сигнал генерируется при изменении текущей страницы с новым текущим id.
Примечание: Сигнал уведомления для свойства currentId.
См. также currentId() и currentPage().
QWizardPage *QWizard::currentPage() const
Возвращает указатель на текущую страницу или 0, если текущей страницы нет (например, перед отображением мастера).
Эквивалентно вызову page(currentId()).
См. также page(), currentId() и restart().
void QWizard::customButtonClicked(int which)
Этот сигнал генерируется, когда пользователь нажимает на пользовательскую кнопку. which может быть CustomButton1, CustomButton2 или CustomButton3.
По умолчанию пользовательская кнопка не отображается. Вызовите setOption() с HaveCustomButton1, HaveCustomButton2 или HaveCustomButton3, чтобы отобразить её, и используйте setButtonText() или setButton() для её настройки.
См. также helpRequested().
void QWizard::done(int result)
Переопределено из QDialog::done().
[virtual protected] bool QWizard::event(QEvent *event)
Переопределено из QObject::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().
[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().
[virtual protected] void QWizard::paintEvent(QPaintEvent *event)
Переопределено из QWidget::paintEvent().
QPixmap QWizard::pixmap(WizardPixmap which) const
Возвращает растровое изображение, установленное для роли which.
По умолчанию установлено только растровое изображение фона BackgroundPixmap на macOS.
См. также setPixmap(), QWizardPage::pixmap() и Элементы страницы мастера.
void QWizard::removePage(int id)
Удаляет страницу с заданным id. При необходимости вызывается cleanupPage().
Примечание: Удаление страницы может повлиять на значение свойства startId.
Этот метод был представлен в Qt 4.5.
См. также addPage(), setPage(), pageRemoved() и startId().
[virtual protected] void QWizard::resizeEvent(QResizeEvent *event)
Переопределено из QWidget::resizeEvent().
[slot] void QWizard::restart()
Перезапускает мастер на стартовой странице. Этот метод вызывается автоматически при отображении мастера.
См. также startId().
void QWizard::setButton(WizardButton which, QAbstractButton *button)
Устанавливает кнопку, соответствующую роли which, на button.
Чтобы добавить дополнительные кнопки к мастеру (например, кнопку Печать), можно вызвать setButton() с CustomButton1 по CustomButton3 и сделать кнопки видимыми, используя опции HaveCustomButton1 по HaveCustomButton3.
См. также button(), setButtonText(), setButtonLayout() и options.
void QWizard::setButtonLayout(const QList<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(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(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(WizardPixmap which, const QPixmap &pixmap)
Устанавливает пикчуру для роли which на pixmap.
Пикчуры используются QWizard при отображении страницы. Какие пикчуры фактически используются, зависит от стиля мастера.
Пикчуры также можно установить для определенной страницы, используя 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)
Переопределено из QWidget::setVisible().
QWidget *QWizard::sideWidget() const
Возвращает виджет слева от мастера или 0.
По умолчанию виджет отсутствует.
Эта функция была добавлена в Qt 4.7.
См. также setSideWidget().
QSize QWizard::sizeHint() const
Переопределено из QWidget::sizeHint().
bool QWizard::testOption(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().
Права копирования