如何禁用QWizard中的下一个按钮
How to disable next button in QWizard
我要做的事情
我正在尝试创建QWizardPage的一个子类,它看起来有点像这样,但有一个小的调整。当计数器变量大于0时,我想禁用下一个按钮。(从一开始就不能是0,因为有些功能需要它去x.x.x-1…0)。
我尝试过的
在构造函数中重新实现isComplete()并发出completeChanged()
bool DemoWizardPage::isComplete()
{
return ! (counter > 0); //Also tried just return false;
}
重新启用initializePage
并从此处禁用下一个按钮
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();
}
}
迄今为止的结果
从代码中我可以看到,当页面加载时,下一个按钮被禁用。但是,由于QWizardPrivate(取自qwizard.cpp)中的这两行,它再次被启用
bool complete = page && page->isComplete();
btn.next->setEnabled(canContinue && complete);
我很困惑为什么isComplete()在这里返回true。我的意思是,我一开始就把计数器设置为2,而且我从不减少它。(是的,每当我设置计数器时,我都会发出completeChanged()
)。
有什么想法吗?
QWizard基于QWizardPage::isComplete()自动管理Next按钮的状态,您不应该在initializePage()中自己实现该功能。没有调用isComplete()的原因是它实际上并没有覆盖QWizardPage中的QWizardPage::isCompleteconst。声明您的函数const,它将正确地覆盖原始函数。
相关文章:
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 重新定位图像时如何前进到下一个内存块
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 用于在 C++ 中使用 while 循环查找下一个素数的简单函数
- CIN 仅在输入非数字值时跳过下一个 CIN
- 查找最小的下一个更大的元素
- 转到基于范围的 for 循环中的下一个迭代器
- 单击一个按钮后创建一个按钮
- 如何检查流中文件的下一个单词是否为 alpha?
- 如何打印下一个字母直到 Z 并继续到 A?
- 在使用堆栈为下一个最大数字编写代码时面临 SIGSEGV(分段错误)
- 使用一个内存集数组和单个堆栈在 O(n) 中查找数组的下一个更大元素
- 有没有一种标准方法可以在C++中获取第 n 个"下一个"浮点值
- 尝试在按下此按钮时去抖动
- 下一个云桌面客户端构建过程
- C++自定义流操纵器,用于更改流上的下一个字符串
- 禁用QT安装程序框架中的本机下一个按钮
- 当我在C++/SFML中按下鼠标按钮时,如何画一个球
- WinAPI 创建窗口 + 子窗口,处理一个按钮按下
- 如何禁用QWizard中的下一个按钮