2011-06-20 77 views
1

我正在使用Qt Designer创建一个QWizardPage。由Qt设计器创建的访问QWizardPage

我已经将文件导入到Qt Creator和它运行良好,到目前为止(我可以生成项目,并运行该向导就好了)

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

+0

你不能使用'completeChanged()'信号并将其挂接到一个插槽(函数)进行处理吗? –

回答

2

为了使isComplete()函数超载QWizardPage,您需要自己创建QWizardPage。基本上,布局一个窗体 - 就像你会对话 - 只为你想要的页面。为该页面创建一个类。这个类继承QWizardPage并重新实​​现isComplete()用于任何你想要的检查。现在在你的向导中,找到你想要的页面。删除其上的所有小部件,然后右键单击并选择Promote Widget...。输入您的班级名称和头文件的路径。现在,当你编译时,它应该为你的页面使用你的类的一个实例,包括你的替代isComplete()

+0

这意味着我将不得不重新创建所有内容,而是将其创建为QWizardPages而不是普通的QWizard? –

+0

@Hiemanshu Sharma:是的。然而,对于大多数设置来说并不是那么困难。您可以在Qt Designer的相同实例中打开当前向导和新页面小部件,然后从向导中剪切小部件并将其粘贴到页面中。 –

+0

声音可行。真的不应该花那么多时间。 –

0

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

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

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

我希望这会有所帮助。

+0

是的。我想实现isComplete(),但我如何访问使用Qt Designer创建的页面。 (所有代码都在编译ui文件时生成的头文件中) –