QWizard Class
QWizard 클래스는 마법사를 위한 프레임워크를 제공합니다. 더 보기...
Header: | #include <QWizard> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
상속합니다: | QDialog |
공용 유형
enum | WizardButton { BackButton, NextButton, CommitButton, FinishButton, CancelButton, …, Stretch } |
enum | WizardOption { IndependentPages, IgnoreSubTitles, ExtendedWatermarkPixmap, NoDefaultButton, NoBackButtonOnStartPage, …, NoCancelButtonOnLastPage } |
flags | WizardOptions |
enum | WizardPixmap { WatermarkPixmap, LogoPixmap, BannerPixmap, BackgroundPixmap } |
enum | WizardStyle { ClassicStyle, ModernStyle, MacStyle, AeroStyle } |
속성
|
공공 기능
QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
virtual | ~QWizard() |
int | addPage(QWizardPage *page) |
QAbstractButton * | button(QWizard::WizardButton which) const |
QString | buttonText(QWizard::WizardButton which) const |
int | currentId() const |
QWizardPage * | currentPage() const |
QVariant | field(const QString &name) const |
bool | hasVisitedPage(int id) const |
virtual int | nextId() const |
QWizard::WizardOptions | options() const |
QWizardPage * | page(int id) const |
QList<int> | pageIds() const |
QPixmap | pixmap(QWizard::WizardPixmap which) const |
void | removePage(int id) |
void | setButton(QWizard::WizardButton which, QAbstractButton *button) |
void | setButtonLayout(const QList<QWizard::WizardButton> &layout) |
void | setButtonText(QWizard::WizardButton which, const QString &text) |
void | setDefaultProperty(const char *className, const char *property, const char *changedSignal) |
void | setField(const QString &name, const QVariant &value) |
void | setOption(QWizard::WizardOption option, bool on = true) |
void | setOptions(QWizard::WizardOptions options) |
void | setPage(int id, QWizardPage *page) |
void | setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap) |
void | setSideWidget(QWidget *widget) |
void | setStartId(int id) |
void | setSubTitleFormat(Qt::TextFormat format) |
void | setTitleFormat(Qt::TextFormat format) |
void | setWizardStyle(QWizard::WizardStyle style) |
QWidget * | sideWidget() const |
int | startId() const |
Qt::TextFormat | subTitleFormat() const |
bool | testOption(QWizard::WizardOption option) const |
Qt::TextFormat | titleFormat() const |
virtual bool | validateCurrentPage() |
QList<int> | visitedIds() const |
QWizard::WizardStyle | wizardStyle() const |
재구현된 공용 함수
virtual void | setVisible(bool visible) override |
virtual QSize | sizeHint() const override |
공용 슬롯
void | back() |
void | next() |
void | restart() |
void | setCurrentId(int id) |
신호
void | currentIdChanged(int id) |
void | customButtonClicked(int which) |
void | helpRequested() |
void | pageAdded(int id) |
void | pageRemoved(int id) |
보호되는 기능
virtual void | cleanupPage(int id) |
virtual void | initializePage(int id) |
재구현된 보호 기능
virtual void | done(int result) override |
virtual bool | event(QEvent *event) override |
virtual bool | nativeEvent(const QByteArray &eventType, void *message, qintptr *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[]) { 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::path(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()를 사용하여 사용할 룩을 명시적으로 설정할 수 있습니다(예: 모든 플랫폼에서 동일한 룩을 원하는 경우).
참고: AeroStyle 은 알파 합성이 활성화된 Windows Vista 시스템에서만 적용됩니다. ModernStyle 은 이 조건이 충족되지 않을 때 대체로 사용됩니다.
마법사 스타일 외에도 마법사의 모양과 느낌을 제어하는 몇 가지 옵션이 있습니다. 이러한 옵션은 setOption() 또는 setOptions()을 사용하여 설정할 수 있습니다. 예를 들어 HaveHelpButton 은 다른 마법사 버튼과 함께 Help 버튼이 QWizard에 표시되도록 합니다.
setButtonLayout()를 사용하여 마법사 버튼의 순서를 임의의 순서로 변경할 수도 있으며, 버튼 행에 사용자 지정 버튼(예: Print 버튼)을 최대 3개까지 추가할 수 있습니다. 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);
마법사 페이지의 요소
마법사는 QWizardPage의 시퀀스로 구성되며 언제든지 한 페이지만 표시됩니다. 페이지에는 다음과 같은 속성이 있습니다:
- title.
- subTitle.
- 마법사의 스타일에 따라 표시되거나 표시되지 않을 수 있는 픽셀맵 집합입니다:
- WatermarkPixmap ( ClassicStyle 및 ModernStyle 에서 사용)
- BannerPixmap ( ModernStyle 에서 사용)
- LogoPixmap ( ClassicStyle 및 ModernStyle 에서 사용)
- BackgroundPixmap ( MacStyle 에서 사용)
아래 다이어그램은 이러한 속성이 모두 존재하고 ModernStyle 을 사용한다고 가정할 때 Q 마법사가 이러한 속성을 렌더링하는 방법을 보여줍니다:
subTitle 이 설정되면 QWizard는 헤더에 표시하며, 이 경우 BannerPixmap 및 LogoPixmap 을 사용하여 헤더를 장식합니다. WatermarkPixmap 은 헤더 아래 왼쪽에 표시됩니다. 하단에는 사용자가 페이지를 탐색할 수 있는 버튼 행이 있습니다.
페이지 자체( QWizardPage 위젯)는 헤더, 워터마크, 버튼 행 사이의 영역을 차지합니다. QGridLayout 일반적으로 페이지는 표준 하위 위젯(QLabels, QLineEdits 등)이 설치된 QWizardPage 페이지입니다.
마법사의 스타일이 MacStyle 인 경우 페이지가 완전히 다르게 보입니다:
워터마크, 배너 및 로고 픽스맵은 MacStyle. BackgroundPixmap 이 설정되어 있으면 마법사의 배경으로 사용되며, 그렇지 않으면 기본 "보조" 이미지가 사용됩니다.
제목과 부제는 개별 페이지에서 QWizardPage::setTitle() 및 QWizardPage::setSubTitle()을 호출하여 설정합니다. 일반 텍스트 또는 HTML일 수 있습니다( titleFormat 및 subTitleFormat 참조). 픽스맵은 setPixmap()를 사용하여 전체 마법사에 대해 전역적으로 설정하거나 QWizardPage::setPixmap()를 사용하여 페이지별로 설정할 수 있습니다.
필드 등록 및 사용
많은 마법사에서는 한 페이지의 내용이 이후 페이지의 필드 기본값에 영향을 미칠 수 있습니다. 페이지 간에 쉽게 통신할 수 있도록 QWizard는 페이지에 필드(예: QLineEdit)를 등록하고 모든 페이지에서 해당 필드 값에 액세스할 수 있는 "필드" 메커니즘을 지원합니다. 필수 필드(즉, 사용자가 다음 페이지로 넘어가기 전에 반드시 입력해야 하는 필드)를 지정할 수도 있습니다.
필드를 등록하려면 QWizardPage::registerField() 필드를 호출합니다. 예를 들어
registerField("evaluate.name*", nameLineEdit); registerField("evaluate.email*", emailLineEdit);
위 코드는 세 개의 하위 위젯과 연결된 세 개의 필드 className
, baseClass
, qobjectMacro
를 등록합니다. className
옆의 별표(*
)는 필수 필드를 나타냅니다.
모든 페이지의 필드는 다른 페이지에서 액세스할 수 있습니다. 예를 들어
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)) { const QString emailAddress = field("details.email").toString(); licenseText = tr("<u>First-Time License Agreement:</u> " "You can use this software subject to the license " "you will receive by email sent to %1.").arg(emailAddress); } else { licenseText = tr("<u>Upgrade License Agreement:</u> " "This software is licensed under the terms of your " "current license."); } bottomLabel->setText(licenseText); }
여기서는 QWizardPage::field()를 호출하여 details.email
필드( DetailsPage
에 정의된)의 콘텐츠에 액세스하고 이를 사용하여 ConclusionPage
을 초기화합니다. 필드 콘텐츠는 QVariant 로 반환됩니다.
QWizardPage::registerField()를 사용하여 필드를 만들 때 고유한 필드 이름과 위젯을 전달합니다. 세 번째와 네 번째 인수로 Qt 속성 이름과 "변경됨" 신호(속성이 변경될 때 발생하는 신호)를 제공할 수도 있지만, QLineEdit, QCheckBox, QComboBox 와 같은 가장 일반적인 Qt 위젯의 경우 QWizard가 어떤 속성을 찾을지 알고 있기 때문에 이 인수는 필요하지 않습니다.
속성을 등록할 때 이름에 별표(*
)가 추가되면 해당 필드는 필수 필드입니다. 페이지에 필수 필드가 있는 경우 Next 및/또는 Finish 버튼은 모든 필수 필드가 채워진 경우에만 활성화됩니다.
필드가 "채워진" 것으로 간주하려면 QWizard는 필드의 현재 값이 원래 값( initializePage()이 호출될 때의 값)과 같지 않은지 확인하기만 하면 됩니다. QLineEdit 및 QAbstractSpinBox 하위 클래스의 경우 QWizard는 또한 hasAcceptableInput()가 참을 반환하는지 확인하여 모든 유효성 검사기 또는 마스크를 준수합니다.
QWizard의 필수 필드 메커니즘은 편의를 위해 제공됩니다. 더 강력한(그러나 더 번거로운) 대안은 QWizardPage::isComplete()를 다시 구현하고 페이지가 완료되거나 불완전해질 때마다 QWizardPage::completeChanged() 신호를 보내는 것입니다.
Next 및/또는 Finish 버튼의 활성화/비활성화 상태는 사용자 입력에 대한 유효성 검사를 수행하는 한 가지 방법입니다. 또 다른 방법은 validateCurrentPage()(또는 QWizardPage::validatePage())를 다시 구현하여 마지막 유효성 검사를 수행하는 것입니다(사용자가 불완전하거나 잘못된 정보를 입력한 경우 오류 메시지를 표시). 함수가 true
을 반환하면 다음 페이지가 표시되거나 마법사가 완료되고, 그렇지 않으면 현재 페이지가 계속 표시됩니다.
선형 마법사 만들기
대부분의 마법사는 1페이지에 이어 2페이지, 마지막 페이지까지 이어지는 선형 구조로 되어 있습니다. 사소한 마법사 예제가 바로 그런 마법사입니다. QWizard를 사용하면 QWizardPage를 인스턴스화하고 addPage()를 사용하여 삽입하여 선형 마법사를 만듭니다. 기본적으로 페이지는 추가된 순서대로 표시됩니다. 예를 들어
QWizard wizard; wizard.addPage(createIntroPage()); wizard.addPage(createRegistrationPage()); wizard.addPage(createConclusionPage());
페이지가 표시될 때 QWizard는 initializePage()를 호출하여(다시 QWizardPage::initializePage()를 호출하여) 페이지를 기본값으로 채웁니다. 기본적으로 이 함수는 아무 일도 하지 않지만 다른 페이지의 필드를 기반으로 페이지의 콘텐츠를 초기화하도록 다시 구현할 수 있습니다( example above 참조 ).
사용자가 Back 를 누르면 cleanupPage()가 호출되며, 이는 다시 QWizardPage::cleanupPage()를 호출합니다. 기본 구현은 페이지의 필드를 원래 값( initializePage()이 호출되기 전의 값)으로 재설정합니다. Back 버튼이 비파괴적이고 사용자가 입력한 값을 유지하도록 하려면 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)) { const QString emailAddress = field("details.email").toString(); licenseText = tr("<u>First-Time License Agreement:</u> " "You can use this software subject to the license " "you will receive by email sent to %1.").arg(emailAddress); } else { licenseText = tr("<u>Upgrade License Agreement:</u> " "This software is licensed under the terms of your " "current license."); } bottomLabel->setText(licenseText); }
QWizardPage, 사소한 마법사 예제 및 라이선스 마법사 예제를참조하세요 .
회원 유형 문서
enum QWizard::WizardButton
이 열거형은 마법사의 버튼을 지정합니다.
Constant | 값 | 설명 |
---|---|---|
QWizard::BackButton | 0 | Back 버튼(macOS의 경우Go Back ) |
QWizard::NextButton | 1 | Next 버튼(macOS의 경우Continue ) |
QWizard::CommitButton | 2 | Commit 버튼 |
QWizard::FinishButton | 3 | Finish 버튼(macOS의 경우Done ) |
QWizard::CancelButton | 4 | Cancel 버튼( NoCancelButton 참조) |
QWizard::HelpButton | 5 | Help 버튼( 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 | Next 또는 Finish 버튼을 대화 상자의 default button 로 만들지 마세요. |
QWizard::NoBackButtonOnStartPage | 0x00000010 | 시작 페이지에 Back 버튼을 표시하지 마세요. |
QWizard::NoBackButtonOnLastPage | 0x00000020 | 마지막 페이지에 Back 버튼을 표시하지 마세요. |
QWizard::DisabledBackButtonOnLastPage | 0x00000040 | 마지막 페이지에서 Back 버튼을 비활성화합니다. |
QWizard::HaveNextButtonOnLastPage | 0x00000080 | 마지막 페이지에 (비활성화된) Next 버튼을 표시합니다. |
QWizard::HaveFinishButtonOnEarlyPages | 0x00000100 | 최종 페이지가 아닌 페이지에 (비활성화된) Finish 버튼을 표시합니다. |
QWizard::NoCancelButton | 0x00000200 | Cancel 버튼을 표시하지 않습니다. |
QWizard::CancelButtonOnLeft | 0x00000400 | Cancel 버튼을 Finish 또는 Next 의 오른쪽이 아닌 Back 의 왼쪽에 배치합니다. |
QWizard::HaveHelpButton | 0x00000800 | Help 버튼을 표시합니다. |
QWizard::HelpButtonOnRight | 0x00001000 | Help 버튼을 버튼 레이아웃의 맨 오른쪽(맨 왼쪽이 아닌 맨 오른쪽)에 배치합니다. |
QWizard::HaveCustomButton1 | 0x00002000 | 첫 번째 사용자 정의 버튼(CustomButton1)을 표시합니다. |
QWizard::HaveCustomButton2 | 0x00004000 | 두 번째 사용자 정의 버튼(CustomButton2)을 표시합니다. |
QWizard::HaveCustomButton3 | 0x00008000 | 세 번째 사용자 정의 버튼(CustomButton3)을 표시합니다. |
QWizard::NoCancelButtonOnLastPage | 0x00010000 | 마지막 페이지에는 Cancel 버튼을 표시하지 않습니다. |
위저드옵션 유형은 QFlags<위저드옵션>에 대한 타입 정의입니다. 이 유형은 WizardOption 값의 OR 조합을 저장합니다.
setOptions(), setOption() 및 testOption()도 참조하세요 .
enum QWizard::WizardPixmap
이 열거형은 페이지에 연결할 수 있는 픽셀맵을 지정합니다.
Constant | 값 | 설명 |
---|---|---|
QWizard::WatermarkPixmap | 0 | ClassicStyle 또는 ModernStyle 페이지의 왼쪽에 있는 큰 픽셀맵입니다. |
QWizard::LogoPixmap | 1 | ClassicStyle 또는 ModernStyle 페이지 헤더의 오른쪽에 있는 작은 픽셀맵 |
QWizard::BannerPixmap | 2 | ModernStyle 페이지 헤더의 배경을 차지하는 픽셀맵입니다. |
QWizard::BackgroundPixmap | 3 | MacStyle 마법사의 배경을 차지하는 픽셀맵 |
setPixmap(), QWizardPage::setPixmap() 및 Elements of a Wizard Page 를참조하십시오 .
enum QWizard::WizardStyle
이 열거형은 QWizard 에서 지원하는 다양한 모양을 지정합니다.
Constant | 값 | 설명 |
---|---|---|
QWizard::ClassicStyle | 0 | 클래식 윈도우 룩 |
QWizard::ModernStyle | 1 | 모던 윈도우 룩 |
QWizard::MacStyle | 2 | macOS 보기 |
QWizard::AeroStyle | 3 | 윈도우 에어로 룩 |
setWizardStyle(), WizardOption, Wizard Look and Feel 를참조하세요 .
속성 문서
currentId : int
이 속성은 현재 페이지의 ID를 보유합니다.
이 속성은 직접 설정할 수 없습니다. 현재 페이지를 변경하려면 next(), back() 또는 restart()를 호출하세요.
기본적으로 이 속성의 값은 -1로, 현재 표시된 페이지가 없음을 나타냅니다.
기능에 액세스합니다:
int | currentId() const |
void | setCurrentId(int id) |
알림 신호:
void | currentIdChanged(int id) |
currentPage()도 참조하세요 .
options : WizardOptions
이 속성에는 마법사의 모양과 느낌에 영향을 주는 다양한 옵션이 있습니다.
기본적으로 다음 옵션이 설정되어 있습니다(플랫폼에 따라 다름):
- Windows: HelpButtonOnRight.
- macOS: NoDefaultButton 및 NoCancelButton.
- X11 및 QWS(임베디드 Linux용 Qt): 없음.
기능에 액세스합니다:
QWizard::WizardOptions | options() const |
void | setOptions(QWizard::WizardOptions options) |
wizardStyle 를참조하세요 .
startId : int
이 속성은 첫 번째 페이지의 ID를 보유합니다.
이 속성을 명시적으로 설정하지 않으면 이 속성의 기본값은 이 마법사에서 가장 낮은 페이지 ID이며, 아직 삽입된 페이지가 없는 경우 -1입니다.
함수 액세스:
int | startId() const |
void | setStartId(int id) |
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 은 현재 위젯 스타일에 관계없이 알파 합성이 활성화된 Windows Vista 시스템에서 AeroStyle 을 사용합니다. 그렇지 않은 경우 기본 마법사 스타일은 현재 위젯 스타일에 따라 다음과 같이 달라집니다. 현재 위젯 스타일이 QMac 스타일인 경우 MacStyle, 현재 위젯 스타일이 QWindows 스타일인 경우 ModernStyle, 그 외의 모든 경우에는 ClassicStyle 이 기본값입니다.
기능에 액세스합니다:
QWizard::WizardStyle | wizardStyle() const |
void | setWizardStyle(QWizard::WizardStyle style) |
Wizard Look and Feel 및 options 을참조하십시오 .
멤버 함수 문서
[explicit]
QWizard::QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
주어진 parent 및 창 flags 으로 마법사를 구성합니다.
parent() 및 windowFlags()도 참조하세요 .
[virtual noexcept]
QWizard::~QWizard()
마법사와 해당 페이지를 삭제하여 할당된 리소스를 모두 해제합니다.
int QWizard::addPage(QWizardPage *page)
주어진 page 을 마법사에 추가하고 페이지의 ID를 반환합니다.
이 ID는 지금까지 QWizard 의 다른 어떤 ID보다 큰 것이 보장됩니다.
setPage(), page() 및 pageAdded()도 참조하세요 .
[slot]
void QWizard::back()
이전 페이지로 돌아갑니다.
이는 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에서 Next 버튼은 Continue 입니다.
button(), setButton(), setButtonText(), QWizardPage::buttonText() 및 QWizardPage::setButtonText()도 참조하세요 .
[virtual protected]
void QWizard::cleanupPage(int id)
이 가상 함수는 사용자가 Back ( QWizard::IndependentPages 옵션이 설정되지 않은 경우)를 클릭하여 페이지를 떠나기 직전에 id 페이지를 정리하기 위해 QWizard 에서 호출됩니다.
기본 구현은 페이지(id)에서 QWizardPage::cleanupPage()를 호출합니다.
QWizardPage::cleanupPage() 및 initializePage()도 참조하세요 .
[signal]
void QWizard::currentIdChanged(int id)
이 신호는 현재 페이지가 변경될 때 새로운 현재 id.
참고: currentId 속성에 대한 알림 신호입니다.
currentId() 및 currentPage()도 참조하세요 .
QWizardPage *QWizard::currentPage() const
현재 페이지에 대한 포인터를 반환하거나 현재 페이지가 없는 경우(예: 마법사가 표시되기 전) nullptr
를 반환합니다.
이는 페이지(currentId())를 호출하는 것과 동일합니다.
page(), currentId() 및 restart()도 참조하세요 .
[signal]
void QWizard::customButtonClicked(int which)
which 는 CustomButton1, CustomButton2 또는 CustomButton3 일 수 있습니다.
기본적으로 사용자 지정 버튼은 표시되지 않습니다. setOption ()에 HaveCustomButton1, HaveCustomButton2, 또는 HaveCustomButton3 을 호출하고 setButtonText() 또는 setButton()을 사용하여 구성합니다.
helpRequested()도 참조하세요 .
[override virtual protected]
void QWizard::done(int result)
재구현합니다: QDialog::done(int r).
[override virtual protected]
bool QWizard::event(QEvent *event)
다시 구현합니다: QWidget::event(QEvent * 이벤트).
QVariant QWizard::field(const QString &name) const
name 라는 필드의 값을 반환합니다.
이 함수는 마법사의 모든 페이지에 있는 필드에 액세스하는 데 사용할 수 있습니다.
QWizardPage::registerField(), QWizardPage::field() 및 setField()도 참조하세요 .
bool QWizard::hasVisitedPage(int id) const
페이지 기록에 id 페이지가 포함되어 있으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
Back 을 누르면 현재 페이지가 다시 "방문하지 않음"으로 표시됩니다.
visitedIds()도 참조하세요 .
[signal]
void QWizard::helpRequested()
이 신호는 사용자가 Help 버튼을 클릭하면 전송됩니다.
기본적으로 Help 버튼은 표시되지 않습니다. 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::restart()가 호출되거나 사용자가 Next 을 클릭한 결과 id 페이지가 표시되기 직전에 QWizard 에서 호출하여 페이지를 준비합니다(단, QWizard::IndependentPages 옵션이 설정된 경우 이 함수는 페이지가 처음 표시될 때만 호출됩니다).
이 함수를 다시 구현하면 이전 페이지의 필드를 기반으로 페이지의 필드가 올바르게 초기화되도록 할 수 있습니다.
기본 구현은 페이지(id)에서 QWizardPage::initializePage()를 호출합니다.
QWizardPage::initializePage() 및 cleanupPage()도 참조하세요 .
[override virtual protected]
bool QWizard::nativeEvent(const QByteArray &eventType, void *message, qintptr *result)
재구현합니다: QWidget::nativeEvent(const QByteArray &eventType, void *message, qintptr *result).
[slot]
void QWizard::next()
다음 페이지로 이동합니다.
이는 Next 또는 Commit 버튼을 누르는 것과 같습니다.
nextId(), back(), accept(), reject() 및 restart()도 참조하세요 .
[virtual]
int QWizard::nextId() const
이 가상 함수는 QWizard 에서 호출하여 사용자가 Next 버튼을 클릭할 때 표시할 페이지를 찾습니다.
반환 값은 다음 페이지의 ID이며, 다음 페이지가 없는 경우 -1입니다.
기본 구현은 currentPage()에서 QWizardPage::nextId()를 호출합니다.
이 함수를 다시 구현하면 동적 페이지 순서를 지정할 수 있습니다.
QWizardPage::nextId() 및 currentPage()도 참조하세요 .
QWizardPage *QWizard::page(int id) const
지정된 id, 또는 해당 페이지가 없는 경우 nullptr
페이지를 반환합니다.
addPage() 및 setPage()도 참조하세요 .
[signal]
void QWizard::pageAdded(int id)
이 신호는 마법사에 페이지가 추가될 때마다 발생합니다. 페이지의 id 가 매개변수로 전달됩니다.
addPage(), setPage() 및 startId()도 참조하세요 .
QList<int> QWizard::pageIds() const
페이지 ID 목록을 반환합니다.
[signal]
void QWizard::pageRemoved(int id)
이 신호는 마법사에서 페이지가 제거될 때마다 발생합니다. 페이지의 id 가 매개변수로 전달됩니다.
removePage() 및 startId()도 참조하세요 .
[override virtual protected]
void QWizard::paintEvent(QPaintEvent *event)
다시 구현합니다: QWidget::paintEvent(QPaintEvent * 이벤트).
QPixmap QWizard::pixmap(QWizard::WizardPixmap which) const
역할에 설정된 픽스맵을 반환합니다 which.
기본적으로 설정되는 유일한 픽스맵은 macOS의 경우 BackgroundPixmap 입니다.
setPixmap(), QWizardPage::pixmap() 및 Elements of a Wizard Page 를참조하세요 .
void QWizard::removePage(int id)
지정된 id 으로 페이지를 제거합니다. 필요한 경우 cleanupPage()이 호출됩니다.
참고: 페이지를 제거하면 startId 속성의 값에 영향을 줄 수 있습니다.
addPage(), setPage(), pageRemoved() 및 startId()도 참조하세요 .
[override virtual protected]
void QWizard::resizeEvent(QResizeEvent *event)
다시 구현합니다: QDialog::resizeEvent(QResizeEvent *).
[slot]
void QWizard::restart()
시작 페이지에서 마법사를 다시 시작합니다. 이 함수는 마법사가 표시될 때 자동으로 호출됩니다.
startId()도 참조하세요 .
void QWizard::setButton(QWizard::WizardButton which, QAbstractButton *button)
역할에 해당하는 버튼을 which 에서 button 으로 설정합니다.
마법사에 추가 버튼(예: Print 버튼)을 추가하려면 CustomButton1 ~ CustomButton3 로 setButton()을 호출하고 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에서 Next 버튼은 Continue 입니다.
마법사에 추가 버튼(예: Print 버튼)을 추가하려면 CustomButton1, CustomButton2, 또는 CustomButton3 으로 setButtonText()를 호출하여 텍스트를 설정하고 HaveCustomButton1, HaveCustomButton2, 및/또는 HaveCustomButton3 옵션을 사용하여 버튼이 표시되도록 하는 것이 한 가지 방법입니다.
버튼 텍스트는 QWizardPage::setButtonText()를 사용하여 페이지 단위로 설정할 수도 있습니다.
buttonText(), setButton(), button(), setButtonLayout(), setOptions() 및 QWizardPage::setButtonText()도 참조하세요 .
[slot]
void QWizard::setCurrentId(int id)
currentId 와 id 사이의 페이지를 방문하지 않고 currentId 를 id 로 설정합니다.
페이지 변경 없이 반환합니다.
- 마법사가 페이지를 보유하지 않음
- 현재 페이지가 유효하지 않습니다.
- 주어진 페이지가 currentId()와 같음
- 주어진 페이지가 범위를 벗어남
참고: 페이지를 앞으로 건너뛰고 id 이 0인 경우 페이지 방문 기록이 삭제됩니다.
참고: currentId 속성에 대한 설정자 함수.
currentId()도 참조하세요 .
void QWizard::setDefaultProperty(const char *className, const char *property, const char *changedSignal)
className 의 기본 속성을 property 으로, 관련 변경 신호를 changedSignal 으로 설정합니다.
기본 속성은 className (또는 그 서브 클래스 중 하나의) 인스턴스가 QWizardPage::registerField()에 전달되고 속성이 지정되지 않은 경우에 사용됩니다.
QWizard 는 가장 일반적인 Qt 위젯을 알고 있습니다. 이러한 위젯(또는 그 서브클래스)의 경우 property 또는 changedSignal 을 지정할 필요가 없습니다. 아래 표에는 이러한 위젯이 나열되어 있습니다:
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)
on 이 참이면 지정된 option 을 활성화하도록 설정하고, 그렇지 않으면 지정된 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() 및 Elements of a Wizard Page 를참조하세요 .
void QWizard::setSideWidget(QWidget *widget)
지정된 widget 을 마법사 왼쪽에 표시하도록 설정합니다. WatermarkPixmap (ClassicStyle 및 ModernStyle)를 사용하는 스타일의 경우 사이드 위젯이 워터마크 위에 표시되고, 다른 스타일의 경우 또는 워터마크가 제공되지 않은 경우 사이드 위젯이 마법사 왼쪽에 표시됩니다.
nullptr
을 전달하면 사이드 위젯이 표시되지 않습니다.
widget 이 nullptr
이 아닌 경우 마법사가 다시 부모를 지정합니다.
이전 사이드 위젯은 모두 숨겨집니다.
같은 위젯을 다른 시간에 다른 위젯으로 setSideWidget()을 호출할 수 있습니다.
다른 사이드 위젯(또는 nullptr
)을 설정한 후 별도로 위젯을 다시 부모로 지정하지 않는 한 마법사가 삭제될 때 여기에서 설정된 모든 위젯은 마법사에 의해 삭제됩니다.
기본적으로 사이드 위젯은 존재하지 않습니다.
sideWidget()도 참조하세요 .
[override virtual]
void QWizard::setVisible(bool visible)
다시 구현합니다: QDialog::setVisible(bool 표시).
QWidget *QWizard::sideWidget() const
마법사 왼쪽 또는 nullptr
에 있는 위젯을 반환합니다.
기본적으로 측면 위젯은 존재하지 않습니다.
setSideWidget()도 참조하세요 .
[override virtual]
QSize QWizard::sizeHint() const
재구현합니다: QDialog::sizeHint() const.
bool QWizard::testOption(QWizard::WizardOption option) const
지정된 option 이 활성화된 경우 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
options, setOption() 및 setWizardStyle()도 참조하세요 .
[virtual]
bool QWizard::validateCurrentPage()
이 가상 함수는 사용자가 Next 또는 Finish 을 클릭하여 마지막 유효성 검사를 수행할 때 QWizard 에 의해 호출됩니다. true
을 반환하면 다음 페이지가 표시되거나 마법사가 완료되고, 그렇지 않으면 현재 페이지가 유지됩니다.
기본 구현은 currentPage()에서 QWizardPage::validatePage()를 호출합니다.
가능하면 유효성 검사 페이지()를 다시 구현하는 것보다 mandatory fields 또는 QWizardPage::isComplete()를 다시 구현하여 Next 또는 Finish 버튼을 비활성화하는 것이 일반적으로 더 나은 스타일입니다.
QWizardPage::validatePage() 및 currentPage()도 참조하세요 .
QList<int> QWizard::visitedIds() const
방문한 페이지의 ID 목록을 페이지를 방문한 순서대로 반환합니다.
hasVisitedPage()도 참조하세요 .
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.