Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在QQ向导中禁用“下一步”按钮_C++_Qt_Qwidget - Fatal编程技术网

C++ 如何在QQ向导中禁用“下一步”按钮

C++ 如何在QQ向导中禁用“下一步”按钮,c++,qt,qwidget,C++,Qt,Qwidget,我想做的事 我正在尝试创建一个QWizardPage的子类,它看起来有点像这样,但是有一个小小的调整。当计数器变量大于0时,我想禁用“下一步”按钮。(由于某些功能要求它运行x..x-1…0,因此从开始运行时它不能为0) 我尝试过的 重新实现是complete()并在构造函数中发出completeChanged() 重新执行初始化页面并从此处禁用“下一步”按钮 我很困惑为什么isComplete()在这里返回true。我的意思是,我在开始时把计数器设置为2,我从不减少它。(是的,每当我设置计数器时

我想做的事

我正在尝试创建一个QWizardPage的子类,它看起来有点像这样,但是有一个小小的调整。当计数器变量大于0时,我想禁用“下一步”按钮。(由于某些功能要求它运行x..x-1…0,因此从开始运行时它不能为0)

我尝试过的

重新实现是complete()并在构造函数中发出completeChanged()

重新执行
初始化页面
并从此处禁用“下一步”按钮

我很困惑为什么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);