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 객체에 대한 포인터를 반환합니다.

페이지는 사용자 지정 동작을 제공하기 위해 다시 구현할 수 있는 다섯 가지 가상 함수를 제공합니다:

  • initializePage()는 사용자가 마법사의 Next 버튼을 클릭할 때 페이지의 콘텐츠를 초기화하기 위해 호출됩니다. 사용자가 이전 페이지에 입력한 내용에서 페이지의 기본값을 도출하려는 경우 이 함수를 다시 구현합니다.
  • cleanupPage()는 사용자가 마법사의 Back 버튼을 클릭하면 페이지의 내용을 초기화하기 위해 호출됩니다.
  • validatePage()는 사용자가 Next 또는 Finish 을 클릭할 때 페이지의 유효성을 검사합니다. 사용자가 불완전하거나 잘못된 정보를 입력한 경우 오류 메시지를 표시하는 데 자주 사용됩니다.
  • nextId()는 다음 페이지의 ID를 반환합니다. 사용자가 제공한 정보에 따라 다른 이동 경로를 허용하는 creating non-linear wizards 경우에 유용합니다.
  • isComplete()는 Next 및/또는 Finish 버튼의 활성화 또는 비활성화 여부를 결정하기 위해 호출됩니다. isComplete ()를 다시 구현하는 경우 전체 상태가 변경될 때마다 completeChanged()가 호출되는지도 확인하세요.

일반적으로 마법사의 Next 버튼과 Finish 버튼은 상호 배타적입니다. isFinalPage ()가 true 을 반환하면 Finish 을 사용할 수 있고, 그렇지 않으면 Next 을 사용할 수 있습니다. 기본적으로 isFinalPage()는 nextId()가 -1을 반환할 때만 참입니다. 한 페이지에 대해 NextFinal 을 동시에 표시하려면(사용자가 "조기 완료"를 수행할 수 있도록 허용하려면) 해당 페이지에서 setFinalPage(true)를 호출합니다. 조기 마무리를 지원하는 마법사의 경우 마법사에서 HaveNextButtonOnLastPageHaveFinishButtonOnEarlyPages 옵션을 설정할 수도 있습니다.

많은 마법사에서는 페이지의 내용이 이후 페이지의 필드 기본값에 영향을 미칠 수 있습니다. 페이지 간에 쉽게 통신할 수 있도록 QWizard 에서는 페이지에 필드(예: QLineEdit)를 등록하고 모든 페이지에서 해당 값에 액세스할 수 있는 "field" mechanism 을 지원합니다. 필드는 전체 마법사에 전역적이며, QWizard 에 모든 로직을 넣거나 페이지가 서로에 대해 명시적으로 알 필요 없이 단일 페이지에서 다른 페이지에 저장된 정보에 쉽게 액세스할 수 있습니다. 필드는 registerField()를 사용하여 등록하고 field() 및 setField()를 사용하여 언제든지 액세스할 수 있습니다.

QWizard, 사소한 마법사 예제라이선스 마법사 예제를참조하세요 .

속성 문서

subTitle : QString

이 속성은 페이지의 부제목을 보유합니다.

자막은 제목과 실제 페이지 사이에 QWizard 으로 표시됩니다. 자막은 선택 사항입니다. ClassicStyleModernStyle 에서는 헤더를 표시하려면 자막을 사용해야 합니다. 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)

subTitleElements 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::IndependentPages 옵션이 설정되지 않은 경우)을 클릭하여 페이지를 떠날 때 QWizard::cleanupPage()에 의해 호출됩니다.

기본 구현은 페이지의 필드를 원래 값( 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::restart()가 호출되거나 사용자가 Next 을 클릭한 결과로 페이지가 표시되기 직전에 QWizard::initializePage()에 의해 호출되어 페이지를 준비합니다. (단, 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

이 가상 함수는 Next 또는 Finish 버튼의 활성화 또는 비활성화 여부를 결정하기 위해 QWizard 에서 호출됩니다.

기본 구현은 mandatory fields 이 모두 채워지면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

이 함수를 다시 구현하는 경우 isComplete() 값이 변경될 때마다 나머지 구현에서 completeChanged() 를 반환해야 합니다. 이렇게 하면 QWizard 버튼의 활성화 또는 비활성화 상태를 업데이트할 수 있습니다. 재구현의 예는 여기에서 확인할 수 있습니다.

completeChanged() 및 isFinalPage()도 참조하세요 .

bool QWizardPage::isFinalPage() const

이 함수는 QWizard 에서 호출하여 이 페이지에 Finish 버튼을 표시할지 여부를 결정합니다.

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

setFinalPage(참)을 명시적으로 호출하면 사용자가 "조기 종료"를 수행하도록 할 수 있습니다.

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 위젯을 알고 있습니다. 이러한 위젯(또는 그 하위 클래스)의 경우 property 또는 changedSignal 을 지정할 필요가 없습니다. 아래 표에는 이러한 위젯이 나열되어 있습니다:

QWizard::setDefaultProperty()를 사용하여 이 테이블에 항목을 추가하거나 기존 항목을 재정의할 수 있습니다.

필드가 "채워진" 것으로 간주하려면 QWizard 은 단순히 현재 값이 원래 값( initializePage()이 호출되기 전의 값)과 같지 않은지 확인합니다. QLineEdit 의 경우 hasAcceptableInput()가 참을 반환하는지 확인하여 유효성 검사기 또는 마스크를 준수합니다.

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 이 참이면 이 페이지를 커밋 페이지로 설정하고, 그렇지 않으면 일반 페이지로 설정합니다.

커밋 페이지는 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 가 참이면 이 페이지를 명시적으로 최종 페이지로 설정합니다.

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

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 을 반환합니다.

가능하면 유효성 검사 페이지()를 다시 구현하는 것보다 Next 또는 Finish 버튼을 비활성화( mandatory fields 지정 또는 isComplete()를 다시 구현)하는 것이 일반적으로 더 나은 스타일입니다.

QWizard::validateCurrentPage() 및 isComplete()도 참조하세요 .

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

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

QWizard::addPage() 및 QWizard::setPage()도 참조하세요 .

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