【问题标题】:Access QWizardPage created by Qt Designer访问 Qt Designer 创建的 QWizardPage
【发布时间】:2011-06-20 08:19:02
【问题描述】:

我正在使用 Qt Designer 创建一个 QWizardPage。

我已将文件导入 Qt Creator,目前运行良好(我可以构建项目并正常运行向导)

现在我需要重新实现 isComplete 函数,但我无法理解如何去做。这些页面被命名为wizardPage{,1,2_1,_2}。我想知道现在重新实现isComplete() 函数的最佳方法是什么。

【问题讨论】:

  • 您不能使用completeChanged() 信号并将其连接到一个槽(函数)进行处理吗?

标签: c++ qt qt4


【解决方案1】:

为了重载QWizardPageisComplete() 函数,您需要自己创建QWizardPage。基本上,只为您想要的页面布局一个表单——就像你想要一个对话框一样。为该页面创建一个类。此类继承自 QWizardPage 并重新实现 isComplete() 以进行您想要的任何检查。现在在您的向导中,找到您希望页面所在的位置。删除上面的所有小部件,然后右键单击并选择Promote Widget...。输入你的类名和头文件的路径。现在,当您编译时,它应该为该页面使用您的类的实例,包括您对 isComplete() 的覆盖。

【讨论】:

  • 这意味着我必须重新创建所有内容,但将其创建为 QWizardPages 而不是普通的 QWizard?
  • @Hiemanshu Sharma:是的。但是,对于大多数设置来说,这并不是那么困难。您可以在同一 Qt Designer 实例中打开当前向导和新页面小部件,然后从向导中剪切小部件并将它们粘贴到页面中。
  • 听起来可行。真的不应该花那么多时间是的。
【解决方案2】:

我不确定您要问什么,但如果您想禁用向导的“下一步”按钮,请从 isComplete() 返回 false。

当您想要启用“下一步”按钮时,发出completeChanged() 信号并返回true。

默认实现已经返回 true。所以你甚至可能不需要重写这个方法。

我希望这会有所帮助。

【讨论】:

  • 是的。我想实现 isComplete() 但如何访问我使用 Qt Designer 创建的页面。 (所有代码都在编译ui文件生成的header中)
猜你喜欢
  • 2023-01-31
  • 2019-06-12
  • 2020-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多