QWizard下一步按钮的控制

QWizard是Qt的向导类,在向导过程中,可以通过函数registerField注册字段实现全局访问,而且可以通过4种方法来控制下一步或者完成按钮的可用性:

第一种方法,isComplete函数,其应用于QWizardPage,可控制单个向导页面的“下一步”或者“完成”按钮的可用性,函数如下:

bool QWizardPage::isComplete () const[virtual]

下面是isComplete的实现,源码来源于

http://doc.qt.nokia.com/qq/qq22-qwizard.html#validatebeforeitstoolate

首先重新实现QWizardPage::isComplete()函数

bool SailingPage::isComplete() const
{
    return field("sailing").toDate().dayOfWeek() != Qt::Sunday;
}

连接输入框或者其他需要监视的对象的信号与QWizardPage::completeChanged ()信号。

connect(sailing, SIGNAL(selectionChanged()), this, SIGNAL(completeChanged()));

当然也可以自己执行QWizardPage::completeChanged ()信号,即自行编写完成检查函数后执行信号:

emit completeChanged()

第二种方法,hasAcceptableInput函数,用于QLineEdit,如果hasAcceptableInput为false,则按钮会变灰。

bool hasAcceptableInput () const

第三种方法,registerField函数,第一个参数name后加星号,例如field*,就可以保证如果此区域不填写,下一步按钮将始处于灰色状态。

void QWizardPage::registerField ( const QString & name, QWidget * widget, const char * property = 0, const char * changedSignal = 0)

第四种方法,重新实现bool QWizardPage::validatePage ()函数,其能在点击下一步或者完成按钮时完成函数所定义的功能,当然就包括验证这一类的东西了。









About the Author

在讀研究生,化學/化工專業,主要關注學佛、計算化學、C++、Python、計算機、古文化、哲學、思維方向,渴求與有共同興趣的朋友交流,詳情請查看“關于”頁面。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

Copyright © 2012 勿慢牛 - All Rights Reserved. - Admin - Powered by WordPress