QWizardPage 類是用於嚮導頁麵的基類。 更多...
| 頭: | #include <QWizardPage> |
| qmake: | QT += widgets |
| Since: | Qt 4.3 |
| 繼承: | QWidget |
該類在 Qt 4.3 引入。
| 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 () |
| void | completeChanged () |
| 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 represents a wizard. Each page is a QWizardPage. When you create your own wizards, you can use QWizardPage directly, or you can subclass it for more control.
A page has the following attributes, which are rendered by QWizard : title , subTitle ,和 set of pixmaps 。見 嚮導頁麵的元素 for details. Once a page is added to the wizard (using QWizard::addPage () 或 QWizard::setPage ()), wizard () returns a pointer to the associated QWizard 對象。
Page provides five virtual functions that can be reimplemented to provide custom behavior:
通常,
下一
button and the
Finish
button of a wizard are mutually exclusive. If
isFinalPage
() 返迴
true
,
Finish
可用;否則,
下一
可用。默認情況下,
isFinalPage
() 為 true 僅當
nextId
() 返迴 -1。若想要展示
下一
and
Final
simultaneously for a page (letting the user perform an "early finish"), call
setFinalPage
(true) on that page. For wizards that support early finishes, you might also want to set the
HaveNextButtonOnLastPage
and
HaveFinishButtonOnEarlyPages
options on the wizard.
In many wizards, the contents of a page may affect the default values of the fields of a later page. To make it easy to communicate between pages, QWizard supports a "field" mechanism that allows you to register a field (e.g., a QLineEdit ) on a page and to access its value from any page. Fields are global to the entire wizard and make it easy for any single page to access information stored by another page, without having to put all the logic in QWizard or having the pages know explicitly about each other. Fields are registered using registerField () and can be accessed at any time using field () 和 setField ().
另請參閱 QWizard , 類嚮導範例 ,和 許可嚮導範例 .
此特性保持頁麵的子標題
The subtitle is shown by the QWizard , between the title and the actual page. Subtitles are optional. In ClassicStyle and ModernStyle , using subtitles is necessary to make the header appear. In MacStyle , the subtitle is shown as a text label just above the actual page.
The subtitle may be plain text or HTML, depending on the value of the QWizard::subTitleFormat 特性。
默認情況下,此特性包含空字符串。
訪問函數:
| QString | subTitle () const |
| void | setSubTitle (const QString & subTitle ) |
另請參閱 title , QWizard::IgnoreSubTitles ,和 嚮導頁麵的元素 .
此特性保持頁麵的標題
標題展示通過 QWizard , above the actual page. All pages should have a title.
The title may be plain text or HTML, depending on the value of the QWizard::titleFormat 特性。
默認情況下,此特性包含空字符串。
訪問函數:
| QString | title () const |
| void | setTitle (const QString & title ) |
構造嚮導頁采用給定 parent .
When the page is inserted into a wizard using QWizard::addPage () 或 QWizard::setPage (), the parent is automatically set to be the wizard.
另請參閱 wizard ().
[signal]
void
QWizardPage::
completeChanged
()
This signal is emitted whenever the complete state of the page (i.e., the value of isComplete ()) changes.
If you reimplement isComplete (), make sure to emit completeChanged() whenever the value of isComplete () changes, to ensure that QWizard updates the enabled or disabled state of its buttons.
另請參閱 isComplete ().
[虛擬]
QWizardPage::
~QWizardPage
()
析構函數。
Returns the text on button which 在此頁麵。
If a text has ben set using setButtonText (), this text is returned. Otherwise, if a text has been set using QWizard::setButtonText (), this text is returned.
By default, the text on buttons depends on the QWizard::wizardStyle . For example, on macOS, the 下一 button is called Continue .
另請參閱 setButtonText (), QWizard::buttonText (),和 QWizard::setButtonText ().
[虛擬]
void
QWizardPage::
cleanupPage
()
此虛函數被調用由 QWizard::cleanupPage () when the user leaves the page by clicking Back (unless the QWizard::IndependentPages option is set).
The default implementation resets the page's fields to their original values (the values they had before initializePage () was called).
另請參閱 QWizard::cleanupPage (), initializePage (),和 QWizard::IndependentPages .
[protected]
QVariant
QWizardPage::
field
(const
QString
&
name
) const
Returns the value of the field called name .
This function can be used to access fields on any page of the wizard. It is equivalent to calling wizard ()-> field ( name ).
範例:
void OutputFilesPage::initializePage() { QString className = field("className").toString(); headerLineEdit->setText(className.toLower() + ".h"); implementationLineEdit->setText(className.toLower() + ".cpp"); outputDirLineEdit->setText(QDir::toNativeSeparators(QDir::tempPath())); }
另請參閱 QWizard::field (), setField (),和 registerField ().
[虛擬]
void
QWizardPage::
initializePage
()
此虛函數被調用由 QWizard::initializePage () to prepare the page just before it is shown either as a result of QWizard::restart () being called, or as a result of the user clicking 下一 . (However, if the QWizard::IndependentPages option is set, this function is only called the first time the page is shown.)
By reimplementing this function, you can ensure that the page's fields are properly initialized based on fields from previous pages. For example:
void OutputFilesPage::initializePage() { QString className = field("className").toString(); headerLineEdit->setText(className.toLower() + ".h"); implementationLineEdit->setText(className.toLower() + ".cpp"); outputDirLineEdit->setText(QDir::toNativeSeparators(QDir::tempPath())); }
默認實現什麼都不做。
另請參閱 QWizard::initializePage (), cleanupPage (),和 QWizard::IndependentPages .
返迴
true
if this page is a commit page; otherwise returns
false
.
另請參閱 setCommitPage ().
[虛擬]
bool
QWizardPage::
isComplete
() const
此虛函數被調用由 QWizard to determine whether the 下一 or Finish button should be enabled or disabled.
默認實現返迴
true
if all
mandatory fields
are filled; otherwise, it returns
false
.
If you reimplement this function, make sure to emit completeChanged (), from the rest of your implementation, whenever the value of isComplete() changes. This ensures that QWizard updates the enabled or disabled state of its buttons. An example of the reimplementation is available here .
另請參閱 completeChanged () 和 isFinalPage ().
此函數被調用通過 QWizard to determine whether the Finish button should be shown for this page or not.
By default, it returns
true
if there is no next page (i.e.,
nextId
() returns -1); otherwise, it returns
false
.
By explicitly calling setFinalPage (true), you can let the user perform an "early finish".
另請參閱 isComplete () 和 QWizard::HaveFinishButtonOnEarlyPages .
[虛擬]
int
QWizardPage::
nextId
() const
此虛函數被調用由 QWizard::nextId () to find out which page to show when the user clicks the 下一 按鈕。
The return value is the ID of the next page, or -1 if no page follows.
By default, this function returns the lowest ID greater than the ID of the current page, or -1 if there is no such ID.
By reimplementing this function, you can specify a dynamic page order. For example:
int IntroPage::nextId() const { if (evaluateRadioButton->isChecked()) { return LicenseWizard::Page_Evaluate; } else { return LicenseWizard::Page_Register; } }
另請參閱 QWizard::nextId ().
Returns the pixmap set for role which .
Pixmaps can also be set for the entire wizard using QWizard::setPixmap (), in which case they apply for all pages that don't specify a pixmap.
另請參閱 setPixmap (), QWizard::pixmap (),和 嚮導頁麵的元素 .
[protected]
void
QWizardPage::
registerField
(const
QString
&
name
,
QWidget
*
widget
, const
char
*
property
= nullptr, const
char
*
changedSignal
= nullptr)
創建字段稱為 name 關聯給定 property 為給定 widget . From then on, that property becomes accessible using field () 和 setField ().
Fields are global to the entire wizard and make it easy for any single page to access information stored by another page, without having to put all the logic in QWizard or having the pages know explicitly about each other.
若
name
ends with an asterisk (
*
), the field is a mandatory field. When a page has mandatory fields, the
下一
and/or
Finish
buttons are enabled only when all mandatory fields are filled. This requires a
changedSignal
to be specified, to tell
QWizard
to recheck the value stored by the mandatory field.
QWizard knows the most common Qt widgets. For these (or their subclasses), you don't need to specify a property 或 changedSignal . The table below lists these widgets:
可以使用 QWizard::setDefaultProperty () to add entries to this table or to override existing entries.
To consider a field "filled", QWizard simply checks that their current value doesn't equal their original value (the value they had before initializePage () was called). For QLineEdit , it also checks that hasAcceptableInput() returns true, to honor any validator or mask.
QWizard 's mandatory field mechanism is provided for convenience. It can be bypassed by reimplementing QWizardPage::isComplete ().
另請參閱 field (), setField (),和 QWizard::setDefaultProperty ().
設置文本為按鈕 which 到 text 在此頁麵。
By default, the text on buttons depends on the QWizard::wizardStyle , but may be redefined for the wizard as a whole using QWizard::setButtonText ().
另請參閱 buttonText (), QWizard::setButtonText (),和 QWizard::buttonText ().
Sets this page to be a commit page if commitPage is true; otherwise, sets it to be a normal page.
A commit page is a page that represents an action which cannot be undone by clicking Back or Cancel .
A Commit button replaces the 下一 button on a commit page. Clicking this button simply calls QWizard::next () just like clicking 下一 does.
A page entered directly from a commit page has its Back button disabled.
另請參閱 isCommitPage ().
[protected]
void
QWizardPage::
setField
(const
QString
&
name
, const
QVariant
&
value
)
Sets the value of the field called name to value .
This function can be used to set fields on any page of the wizard. It is equivalent to calling wizard ()-> setField( name , value ) .
另請參閱 QWizard::setField (), field (),和 registerField ().
Explicitly sets this page to be final if finalPage 為 true。
After calling setFinalPage(true),
isFinalPage
() 返迴
true
和
Finish
button is visible (and enabled if
isComplete
() 返迴 true)。
After calling setFinalPage(false),
isFinalPage
() 返迴
true
if
nextId
() returns -1; otherwise, it returns
false
.
另請參閱 isFinalPage (), isComplete (),和 QWizard::HaveFinishButtonOnEarlyPages .
Sets the pixmap for role which to pixmap .
The pixmaps are used by QWizard when displaying a page. Which pixmaps are actually used depend on the wizard style .
Pixmaps can also be set for the entire wizard using QWizard::setPixmap (), in which case they apply for all pages that don't specify a pixmap.
另請參閱 pixmap (), QWizard::setPixmap (),和 嚮導頁麵的元素 .
[虛擬]
bool
QWizardPage::
validatePage
()
此虛函數被調用由
QWizard::validateCurrentPage
() when the user clicks
下一
or
Finish
to perform some last-minute validation. If it returns
true
, the next page is shown (or the wizard finishes); otherwise, the current page stays up.
默認實現返迴
true
.
When possible, it is usually better style to disable the 下一 or Finish button (by specifying mandatory fields or reimplementing isComplete ()) than to reimplement validatePage().
另請參閱 QWizard::validateCurrentPage () 和 isComplete ().
[protected]
QWizard
*QWizardPage::
wizard
() const
Returns the wizard associated with this page, or
nullptr
if this page hasn't been inserted into a
QWizard
yet.
另請參閱 QWizard::addPage () 和 QWizard::setPage ().