2011-06-20 75 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文件時生成的頭文件中) –