【问题标题】:How can I detect the back button being pressed in QWizard?如何检测 QWizard 中按下的后退按钮?
【发布时间】:2013-05-10 01:39:43
【问题描述】:

我有一个 QWizard,每次出现向导页面时我都需要执行某些操作。目前我正在 validateCurrentPage 函数中执行此操作,但我意识到它仅在按下 Next 按钮时调用,而不是 Back 按钮。

我已经尝试了 currentIdChangedcustomButtonClicked 信号,但它们也没有被调用。

知道如何响应按下“返回”按钮后显示的向导页面吗?我一定错过了一些简单的东西......

谢谢, 艾伦

编辑:添加了 cmannett85 要求的代码和编译器错误

QAbstractButton *backButton = button(QWizard::BackButton);
connect(backButton, SIGNAL(clicked()), this, SLOT(backClicked));

完整的错误是:

错误 1 ​​错误 C2664: 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)' : 无法将参数 1 从 'QAbstractButton *' 转换为 'const QObject *'

【问题讨论】:

  • 除非您忘记添加“#include ”,否则此错误实际上没有意义。
  • 谢谢。这确实是错误的原因......对不起,我自己没有发现它。

标签: c++ qt events wizard signals-slots


【解决方案1】:

使用QAbstractButton *QWizard::button (WizardButton which) 获取返回按钮并将其连接到插槽。

例子:

QAbstractButton *backButton = wizard->button(QWizard::BackButton);
connect(backButton, SIGNAL(clicked()), this, SLOT(backClicked()));

【讨论】:

  • 谢谢。我已经尝试过了,但我收到错误“无法将参数 1 从 'QAbstractButton *' 转换为 'const QObject *'”。如果我可以通过 ui->... 回到后退按钮,那么它会起作用。
  • @AlanSpark 还有其他内容,因为QAbstractButton 派生自QObject,您能否在问题中添加用于该操作的代码和完整的编译器错误?
  • 看起来这可以完成这项工作,尽管它看起来比应该的要复杂一些。不过,我现在会接受它!感谢您的帮助。
猜你喜欢
  • 2019-05-06
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
相关资源
最近更新 更多