簡體   English   中英

調用父小部件功能

[英]Call parent widget function

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

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

在處理數據之前,請確保所有相應的字段都包含數據,然后保證您擁有有效的表單。

將數據從表單傳遞給表單數據的某些使用者的典型方法是創建一個中間人類來保存數據。 在驗證表單后填充類的實例,然后將實例傳遞給使用者。 這樣,如果表單中有更改,則只要收集相同的數據,您的使用者就會與這些更改隔離開來。

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

Sig / slot不保證呼叫順序,並且發出信號實質上意味着任何能夠看到此對象的人都可以連接到其信號並選擇此更改。 如果你必須有子組件處理表單數據的保證順序,那為什么甚至給維護程序員一個搞亂的選擇呢?

其次,這一問題並不應該駐留對象。 有一天,當您的數據消費者變得非常復雜並且您希望根據某些情況(可能是用戶權限,或今天的日期,或者當前溫度,我不知道!)捕捉不同的數據時,那么您將要去想做一個重新拱起。 如果您向消費者獲取數據的邏輯高度依賴於以某種方式駐留在表單中的對象,那么您做錯了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM