C++ 如何在QQ向导中禁用“下一步”按钮
我想做的事 我正在尝试创建一个QWizardPage的子类,它看起来有点像这样,但是有一个小小的调整。当计数器变量大于0时,我想禁用“下一步”按钮。(由于某些功能要求它运行x..x-1…0,因此从开始运行时它不能为0) 我尝试过的 重新实现是complete()并在构造函数中发出completeChanged() 重新执行C++ 如何在QQ向导中禁用“下一步”按钮,c++,qt,qwidget,C++,Qt,Qwidget,我想做的事 我正在尝试创建一个QWizardPage的子类,它看起来有点像这样,但是有一个小小的调整。当计数器变量大于0时,我想禁用“下一步”按钮。(由于某些功能要求它运行x..x-1…0,因此从开始运行时它不能为0) 我尝试过的 重新实现是complete()并在构造函数中发出completeChanged() 重新执行初始化页面并从此处禁用“下一步”按钮 我很困惑为什么isComplete()在这里返回true。我的意思是,我在开始时把计数器设置为2,我从不减少它。(是的,每当我设置计数器时
初始化页面
并从此处禁用“下一步”按钮
我很困惑为什么isComplete()在这里返回true。我的意思是,我在开始时把计数器设置为2,我从不减少它。(是的,每当我设置计数器时,我都会发出一个completeChanged()
)
有什么想法吗?QWizard根据QWizardPage::isComplete()自动管理“下一步”按钮的状态,您不应该在initializePage()中自己实现该功能。没有调用isComplete()的原因是它实际上没有覆盖QWizardPage::isCompleteconst。声明函数const,它将正确覆盖原始函数
bool DemoWizardPage::isComplete()
{
return ! (counter > 0); //Also tried just return false;
}
void DemoWizardPage::initializePage()
{
qDebug() << "QWizardPage:: initialize page";
if (!this->isComplete())
{
qDebug() << "try to turn off next button";
wizard()->button(QWizard::NextButton)->setDisabled(true);
qDebug() << "next button enabled? "
<< wizard()->button(QWizard::NextButton)->isEnabled();
}
}
bool complete = page && page->isComplete();
btn.next->setEnabled(canContinue && complete);