2012-04-13 71 views
1

我有一個QStackedWidget與幾個QPushButton按鈕。小部件的父小部件是QMainWindow。在QStackedWidget裏面我也有一些QLineEdit。我想要做的事很簡單:驗證包含文本框的表單,以及是否可以調用將處理數據的自定義類的函數。類的實例是在我的QMainWindow類中創建的。調用該類方法的最佳方法是什麼?我應該使用Qt的信號/插槽機制將我的自定義類連接到QStackedWidget中的小部件實例嗎?使用Qt調用父窗口小部件功能

回答

3

您可以根據需要多次從QValidator中派生出來,並在需要驗證的每個字段上安裝驗證程序。這樣,您可以確保該字段爲空或包含有效的條目。

在處理您的數據之前,請確保所有適當的字段都有數據,並保證您擁有有效的表單。

將數據從表單傳遞給某些表單數據使用者的典型方法是創建一箇中間人類來存儲數據。在表單被驗證之後,該類的一個實例被填充,然後實例被傳遞給使用者。這樣,如果表單發生變化,則只要收集了相同的數據,您的客戶就會與這些更改分離。

一般規則是針對對象接口,而不是它們的實現。無論你是做sig/slot還是直接函數調用都沒有關係,只要你記住一些事情:

sig/slot不保證呼叫順序,發射信號本質上意味着任何人都可以看到這個對象可以連接到它的信號並選擇這個改變。如果你的必須有的子組件處理你的表單數據的保證順序,那麼爲什麼即使給維護程序員選項搞亂?

其次,應該沒有問題其中對象所在。有一天,當你的數據消費者變得非常複雜,並且你想基於某種場景(也許是用戶權限,或者今天的日期,或者當前的溫度,我不知道!)來捕捉不同的數據時,那麼你將要想做一個重新拱門。如果將數據傳遞給消費者的邏輯高度依賴於表單中以某種方式存在的對象,那麼你就錯了。

+0

驗證數據後,我必須將這些數據傳遞給自定義類。在這種情況下,信號/插槽系統是否合適?還是應該使用別的東西? – Stefano 2012-04-13 13:22:37

+0

@Stefano我認爲我不明白什麼樣的信號/時隙在數據驗證之後與此有關。無論你想要什麼,你都可以做到。確定何時查看並查看所有字段中是否有有效數據可能需要信號/插槽;這取決於你的架構。 – 2012-04-13 13:25:40

+0

基本上,將驗證數據傳遞給在父QWidget類中具有自己的實例的自定義類方法的最佳方式是什麼? – Stefano 2012-04-13 13:53:40

相關問題