이 페이지에서

QWizardPage Class

QWizardPage 클래스는 마법사 페이지의 기본 클래스입니다. 더 보기...

헤더: #include <QWizardPage>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
상속: QWidget

속성

공개 함수

QWizardPage(QWidget *parent = nullptr)
virtual ~QWizardPage()
QString buttonText(QWizard::WizardButton which) const
virtual void cleanupPage()
virtual void initializePage()
bool isCommitPage() const
virtual bool isComplete() const
bool isFinalPage() const
virtual int nextId() const
QPixmap pixmap(QWizard::WizardPixmap which) const
void setButtonText(QWizard::WizardButton which, const QString &text)
void setCommitPage(bool commitPage)
void setFinalPage(bool finalPage)
void setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)
void setSubTitle(const QString &subTitle)
void setTitle(const QString &title)
QString subTitle() const
QString title() const
virtual bool validatePage()

신호

보호된 함수

QVariant field(const QString &name) const
void registerField(const QString &name, QWidget *widget, const char *property = nullptr, const char *changedSignal = nullptr)
void setField(const QString &name, const QVariant &value)
QWizard *wizard() const

상세 설명

QWizard 마법사를 나타냅니다. 각 페이지는 QWizardPage입니다. 사용자 정의 마법사를 만들 때 QWizardPage를 직접 사용하거나, 더 세밀한 제어를 위해 이를 상속받아 서브클래스를 만들 수 있습니다.

페이지에는 QWizard 에 의해 렌더링되는 다음과 같은 속성이 있습니다: title, subTitle 및 set of pixmaps. 자세한 내용은 Elements of a Wizard Page 를 참조하십시오. 페이지가 마법사에 추가되면( QWizard::addPage() 또는 QWizard::setPage() 사용), wizard()는 관련 QWizard 객체에 대한 포인터를 반환합니다.

Page 클래스는 사용자 정의 동작을 구현하기 위해 재정의할 수 있는 다섯 가지 가상 함수를 제공합니다:

  • initializePage()는 사용자가 마법사의 ‘ Next ’ 버튼을 클릭했을 때 페이지 내용을 초기화하기 위해 호출됩니다. 이전 페이지에서 사용자가 입력한 내용을 바탕으로 페이지의 기본값을 도출하려면 이 함수를 재구현해야 합니다.
  • cleanupPage()는 사용자가 마법사의 ‘ Back ’ 버튼을 클릭할 때 페이지의 내용을 초기화하기 위해 호출됩니다.
  • validatePage()는 사용자가 ‘ Next ’ 또는 ‘ Finish ’를 클릭할 때 페이지의 유효성을 검사합니다. 사용자가 정보를 불완전하거나 유효하지 않게 입력한 경우 오류 메시지를 표시하는 데 자주 사용됩니다.
  • nextId()는 다음 페이지의 ID를 반환합니다. 이는 사용자가 제공한 정보에 따라 서로 다른 이동 경로를 허용하는 creating non-linear wizards 와 같은 경우에 유용합니다.
  • isComplete()는 Next 및/또는 Finish 버튼의 활성화 여부를 결정하기 위해 호출됩니다. isComplete()를 재구현하는 경우, complete 상태가 변경될 때마다 completeChanged()가 호출되도록 해야 합니다.

일반적으로 마법사의 Next 버튼과 Finish 버튼은 상호 배타적입니다. isFinalPage()가 true 를 반환하면 Finish 를 사용할 수 있으며, 그렇지 않은 경우 Next 를 사용할 수 있습니다. 기본적으로, isFinalPage()은 nextId()이 -1을 반환할 때만 true가 됩니다. 특정 페이지에서 Next 와 Final 을 동시에 표시하여(사용자가 "조기 종료"를 수행할 수 있도록) 하려면, 해당 페이지에서 setFinalPage(true)를 호출하십시오. 조기 종료를 지원하는 마법사의 경우, 마법사에 HaveNextButtonOnLastPage 및 HaveFinishButtonOnEarlyPages 옵션을 설정할 수도 있습니다.

많은 마법사에서 한 페이지의 내용이 다음 페이지 필드의 기본값에 영향을 미칠 수 있습니다. 페이지 간 통신을 용이하게 하기 위해, QWizard 는 "field" mechanism 를 지원하며, 이를 통해 페이지의 필드(예: QLineEdit)를 등록하고 모든 페이지에서 해당 값에 접근할 수 있습니다. 필드는 전체 마법사에 걸쳐 전역적으로 적용되며, 모든 페이지가 QWizard 에 모든 로직을 포함시키거나 페이지 간에 서로를 명시적으로 인식할 필요 없이 다른 페이지에 저장된 정보에 쉽게 접근할 수 있게 해줍니다. 필드는 registerField()을 사용하여 등록할 수 있으며, field() 및 setField()을 사용하여 언제든지 접근할 수 있습니다.

QWizard, 간단한 마법사 예제 및 라이선스 마법사 예제도참조하십시오 .

속성 문서

subTitle : QString

이 속성은 페이지의 부제목을 저장합니다.

부제목은 QWizard 에 의해 제목과 실제 페이지 사이에 표시됩니다. 부제목은 선택 사항입니다. ClassicStyle 및 ModernStyle 에서는 헤더가 표시되도록 하려면 부제목을 사용해야 합니다. MacStyle 에서는 부제목이 실제 페이지 바로 위에 텍스트 레이블로 표시됩니다.

부제목은 QWizard::subTitleFormat 속성의 값에 따라 일반 텍스트이거나 HTML일 수 있습니다.

기본적으로 이 속성은 빈 문자열을 포함합니다.

액세스 함수:

QString subTitle() const
void setSubTitle(const QString &subTitle)

title, QWizard::IgnoreSubTitles 및 Elements of a Wizard Page도 참조하십시오 .

title : QString

이 속성은 페이지의 제목을 나타냅니다.

제목은 실제 페이지 상단의 ' QWizard'에 표시됩니다. 모든 페이지에는 제목이 있어야 합니다.

제목은 QWizard::titleFormat 속성의 값에 따라 일반 텍스트나 HTML로 표시될 수 있습니다.

기본적으로 이 속성은 빈 문자열을 포함합니다.

액세스 함수:

QString title() const
void setTitle(const QString &title)

subTitle 및 Elements of a Wizard Page도 참조하십시오 .

멤버 함수 설명서

[explicit] QWizardPage::QWizardPage(QWidget *parent = nullptr)

지정된 parent 를 사용하여 마법사 페이지를 생성합니다.

QWizard::addPage() 또는 QWizard::setPage()를 사용하여 페이지를 마법사에 삽입하면, 부모가 자동으로 해당 마법사로 설정됩니다.

wizard()도 참조하십시오 .

[virtual noexcept] QWizardPage::~QWizardPage()

소멸자.

QString QWizardPage::buttonText(QWizard::WizardButton which) const

이 페이지의 ‘ which ’ 버튼에 표시된 텍스트를 반환합니다.

setButtonText()를 사용하여 텍스트가 설정된 경우, 해당 텍스트가 반환됩니다. 그렇지 않은 경우, QWizard::setButtonText()를 사용하여 텍스트가 설정된 경우, 해당 텍스트가 반환됩니다.

기본적으로 버튼의 텍스트는 QWizard::wizardStyle 에 따라 달라집니다. 예를 들어, macOS에서는 Next 버튼이 Continue 로 표시됩니다.

setButtonText(), QWizard::buttonText(), QWizard::setButtonText()도 참조하십시오 .

[virtual] void QWizardPage::cleanupPage()

이 가상 함수는 사용자가 Back 를 클릭하여 페이지를 떠날 때 QWizard::cleanupPage()에 의해 호출됩니다( QWizard::IndependentPages 옵션이 설정된 경우는 제외).

기본 구현에서는 페이지의 필드 값을 원래 값( initializePage()이 호출되기 전의 값)으로 재설정합니다.

QWizard::cleanupPage(), initializePage() 및 QWizard::IndependentPages도 참조하십시오 .

[signal] void QWizardPage::completeChanged()

이 신호는 페이지의 완료 상태(즉, ` isComplete()`의 값)가 변경될 때마다 발생합니다.

isComplete()을 재구현하는 경우, isComplete()의 값이 변경될 때마다 completeChanged()를 반드시 발생시켜야 합니다. 그래야 QWizard 가 버튼의 활성화 또는 비활성화 상태를 올바르게 업데이트할 수 있습니다.

isComplete()도 참조하십시오 .

[protected] QVariant QWizardPage::field(const QString &name) const

name 라는 필드의 값을 반환합니다.

이 함수는 마법사의 모든 페이지에서 필드에 접근하는 데 사용할 수 있습니다. 이는 wizard()->field(name)를 호출하는 것과 동일합니다.

예:

        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);

QWizard::field(), setField(), registerField()도 참조하십시오 .

[virtual] void QWizardPage::initializePage()

이 가상 함수는 QWizard::initializePage()에 의해 호출되며, QWizard::restart()이 호출되거나 사용자가 Next 을 클릭한 결과로 페이지가 표시되기 직전에 페이지를 준비합니다. (단, QWizard::IndependentPages 옵션이 설정된 경우, 이 함수는 페이지가 처음 표시될 때만 호출됩니다.)

이 함수를 재구현하면 이전 페이지의 필드를 기반으로 해당 페이지의 필드가 올바르게 초기화되도록 할 수 있습니다. 예를 들어:

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);
}

기본 구현은 아무 작업도 수행하지 않습니다.

QWizard::initializePage(), cleanupPage(), QWizard::IndependentPages도 참조하십시오 .

bool QWizardPage::isCommitPage() const

이 페이지가 커밋 페이지인 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.

setCommitPage()도 참조하십시오 .

[virtual] bool QWizardPage::isComplete() const

이 가상 함수는 QWizard 에 의해 호출되어, Next 또는 Finish 버튼의 활성화 여부를 결정합니다.

기본 구현은 모든 mandatory fields 가 채워진 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.

이 함수를 재구현하는 경우, isComplete()의 값이 변경될 때마다 구현 코드의 나머지 부분에서 completeChanged()을 호출해야 합니다. 이렇게 하면 QWizard 가 버튼의 활성화 또는 비활성화 상태를 올바르게 업데이트할 수 있습니다. 재구현 예제는 여기에서 확인할 수 있습니다.

completeChanged() 및 isFinalPage()도 참조하십시오 .

bool QWizardPage::isFinalPage() const

이 함수는 QWizard 에 의해 호출되어, 해당 페이지에 Finish 버튼이 표시되어야 하는지 여부를 결정합니다.

기본적으로 다음 페이지가 없는 경우(즉, nextId()가 -1을 반환하는 경우) true 을 반환하고, 그렇지 않은 경우 false 을 반환합니다.

setFinalPage(true)를 명시적으로 호출하면 사용자가 “조기 종료”를 수행할 수 있게 할 수 있습니다.

isComplete() 및 QWizard::HaveFinishButtonOnEarlyPages도 참조하십시오 .

[virtual] int QWizardPage::nextId() const

이 가상 함수는 QWizard::nextId()에 의해 호출되어, 사용자가 ‘ Next ’ 버튼을 클릭했을 때 표시할 페이지를 결정합니다.

반환 값은 다음 페이지의 ID이며, 뒤따르는 페이지가 없는 경우에는 -1을 반환합니다.

기본적으로 이 함수는 현재 페이지의 ID보다 큰 가장 작은 ID를 반환하며, 해당 ID가 없는 경우에는 -1을 반환합니다.

이 함수를 재구현하면 동적인 페이지 순서를 지정할 수 있습니다. 예를 들어:

int IntroPage::nextId() const
{
    if (evaluateRadioButton->isChecked()) {
        return LicenseWizard::Page_Evaluate;
    } else {
        return LicenseWizard::Page_Register;
    }
}

QWizard::nextId()도 참조하십시오 .

QPixmap QWizardPage::pixmap(QWizard::WizardPixmap which) const

which 역할에 설정된 픽스맵을 반환합니다.

QWizard::setPixmap()를 사용하여 마법사 전체에 픽스맵을 설정할 수도 있으며, 이 경우 픽스맵이 명시되지 않은 모든 페이지에 적용됩니다.

setPixmap(), QWizard::pixmap() 및 Elements of a Wizard Page도 참조하십시오 .

[protected] void QWizardPage::registerField(const QString &name, QWidget *widget, const char *property = nullptr, const char *changedSignal = nullptr)

지정된 widget 의 지정된 property 와 연관된 ‘ name ’라는 필드를 생성합니다. 이후부터는 field() 및 setField()을 사용하여 해당 속성에 접근할 수 있습니다.

필드는 전체 마법사에 걸쳐 전역적으로 적용되며, 모든 페이지가 QWizard 에 모든 로직을 포함시키거나 페이지 간에 서로를 명시적으로 인식할 필요 없이 다른 페이지에 저장된 정보에 쉽게 접근할 수 있게 해줍니다.

name 가 별표(*)로 끝나는 경우, 해당 필드는 필수 필드입니다. 페이지에 필수 필드가 있는 경우, Next 및/또는 Finish 버튼은 모든 필수 필드가 채워졌을 때만 활성화됩니다. 이를 위해서는 changedSignal 을 지정하여 QWizard 가 필수 필드에 저장된 값을 재확인하도록 해야 합니다.

QWizard 가장 일반적인 Qt Widgets를 인식합니다. 이러한 Widgets(또는 그 하위 클래스)의 경우, property 이나 changedSignal 을 지정할 필요가 없습니다. 아래 표에는 이러한 Widgets가 나열되어 있습니다:

QWizard::setDefaultProperty()을 사용하여 이 테이블에 항목을 추가하거나 기존 항목을 덮어쓸 수 있습니다.

필드가 "채워진" 것으로 간주하기 위해, ` QWizard ()`는 해당 필드의 현재 값이 원래 값(` initializePage()`가 호출되기 전의 값)과 같지 않은지 확인합니다. ` QLineEdit`의 경우, 유효성 검사기나 마스크를 준수하기 위해 ` hasAcceptableInput()`가 `true`를 반환하는지도 확인합니다.

QWizard의 필수 입력 필드 메커니즘은 편의성을 위해 제공됩니다. QWizardPage::isComplete()을 재구현하여 이 기능을 우회할 수 있습니다.

field(), setField() 및 QWizard::setDefaultProperty()도 참조하십시오 .

void QWizardPage::setButtonText(QWizard::WizardButton which, const QString &text)

이 페이지에서 ‘ which ’ 버튼의 텍스트를 ‘ text ’로 설정합니다.

기본적으로 버튼의 텍스트는 QWizard::wizardStyle 에 따라 결정되지만, QWizard::setButtonText()를 사용하여 마법사 전체에 대해 재정의할 수 있습니다.

buttonText(), QWizard::setButtonText(), QWizard::buttonText()도 참조하십시오 .

void QWizardPage::setCommitPage(bool commitPage)

commitPage 가 true인 경우 이 페이지를 커밋 페이지로 설정하고, 그렇지 않은 경우 일반 페이지로 설정합니다.

커밋 페이지는 Back 또는 Cancel 를 클릭해도 되돌릴 수 없는 작업을 나타내는 페이지입니다.

Commit 커밋 페이지에서는 버튼이 Next 버튼을 대체합니다. 이 버튼을 클릭하면 Next 를 클릭했을 때와 마찬가지로 QWizard::next()를 호출합니다.

커밋 페이지에서 직접 이동한 페이지에서는 Back 버튼이 비활성화됩니다.

isCommitPage()도 참조하십시오 .

[protected] void QWizardPage::setField(const QString &name, const QVariant &value)

name 라는 필드의 값을 value 로 설정합니다.

이 함수는 마법사의 모든 페이지에서 필드를 설정하는 데 사용할 수 있습니다. 이는 wizard()->setField(name, value)를 호출하는 것과 동일합니다.

QWizard::setField(), field() 및 registerField()도 참조하십시오 .

void QWizardPage::setFinalPage(bool finalPage)

finalPage 가 true인 경우, 이 페이지를 명시적으로 최종 페이지로 설정합니다.

setFinalPage(true)를 호출한 후, isFinalPage()는 true 를 반환하며, Finish 버튼이 표시됩니다( isComplete()가 true를 반환하면 활성화됨).

setFinalPage(false)를 호출한 후, isFinalPage()는 nextId()가 -1을 반환하면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

isFinalPage(), isComplete(), QWizard::HaveFinishButtonOnEarlyPages도 참조하십시오 .

void QWizardPage::setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)

which 역할에 대한 픽스맵을 pixmap 로 설정합니다.

QWizard 는 페이지를 표시할 때 픽스맵을 사용합니다. 실제로 어떤 픽스맵이 사용되는지는 wizard style 에 따라 달라집니다.

QWizard::setPixmap()을 사용하여 마법사 전체에 픽스맵을 설정할 수도 있으며, 이 경우 픽스맵이 명시되지 않은 모든 페이지에 적용됩니다.

pixmap(), QWizard::setPixmap(), Elements of a Wizard Page도 참조하십시오 .

[virtual] bool QWizardPage::validatePage()

이 가상 함수는 사용자가 Next 또는 Finish 을 클릭하여 마지막 순간에 유효성 검사를 수행할 때 QWizard::validateCurrentPage()에 의해 호출됩니다. 이 함수가 true 을 반환하면 다음 페이지가 표시되거나(또는 마법사가 종료됩니다); 그렇지 않으면 현재 페이지가 그대로 유지됩니다.

기본 구현은 true 를 반환합니다.

가능한 경우, validatePage()를 재구현하는 것보다 Next 또는 Finish 버튼을 비활성화하는 것( mandatory fields 를 지정하거나 isComplete()를 재구현하여)이 일반적으로 더 바람직한 방식입니다.

QWizard::validateCurrentPage() 및 isComplete()도 참조하십시오 .

[protected] QWizard *QWizardPage::wizard() const

이 페이지와 연결된 마법사를 반환하거나, 이 페이지가 아직 QWizard 에 삽입되지 않은 경우에는 nullptr 를 반환합니다.

QWizard::addPage() 및 QWizard::setPage()도 참조하십시오 .

© 2026 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.