2012-06-14 54 views
0

我已經使用GUI創建了一個嚮導,因此我的頁面都是UI的一部分。現在嚮導中的必填字段

,頁面上的一個我想使字段是強制性的。從尋找到的API似乎有一個registerField()功能,也可以確保直到字段填入下一個按鈕不可用。但是,該功能受到保護,QWizardPage這意味着我可以不設置此。有沒有辦法執行這種行爲,而不需要創建一個新的類?

我知道我可以創建一個新的類,但我正在考慮,如果我創造更多的頁面,然後我就需要爲每一頁我已創建的類。我也想過如此簡單的情況,這感覺有點像矯枉過正。

回答

1

的Qt設計QWizardPage這種方式,因爲它是網頁負責領域邏輯,而不是其他類。但是,如果你仍然想使用這個(糟糕的設計)模式,你可以簡單地使用public成員來創建QWizardPage包裝器,該成員調用protected成員,並使用它代替QWizardPage。請記住,頁面具有一些邏輯,並且更好地將該邏輯與其他類分開。此外,如果你有一些類似的頁面,則可以重複使用一類具有一些parameteres

+0

感謝您的答覆。這從設計的角度來看是有道理的。但是GUI允許你在一個類中設置頁面,所以我認爲可以在控件內部完成我想要完成的任務。也許它是爲GUI中的簡單情況設置的。 – Firedragon

+0

QWizardPage僅適用於「簡單」頁面。任何額外的邏輯都應該分開 –

0

要設置與registerField強制性字段,你只需要設置它的名稱結尾的智慧「*」。

例:

QLineEdit* nameLineEdit = new QLineEdit();  
registerField("name*", nameLineEdit); 

這樣,按鈕,繼續將只有當你寫的東西到nameLineEdit啓用。請檢查文檔QWizardField#registerField.