Sig / slot不保证呼叫顺序,并且发出信号实质上意味着任何能够看到此对象的人都可以连接到其信号并选择此更改 . 如果你必须有子组件处理表单数据的保证顺序,那为什么甚至给维护程序员一个搞乱的选择呢?
其次,对象所在的位置无关紧要 . 有一天,当您的数据消费者变得非常复杂并且您希望根据某些情况(可能是用户权限,或者今天知道!)来捕获不同的数据时,那么您're going to want to do a re-arch. If your logic for getting the data to the consumers is highly dependent upon the objects residing in a certain way in your form, then you'做错了 .
1 回答
您可以根据需要多次派生QValidator,并在需要验证的每个字段上安装验证器 . 这样,您可以确保该字段为空或包含有效条目 .
在处理数据之前,请确保所有相应的字段都包含数据,然后保证您拥有有效的表单 .
将数据从表单传递给表单数据的某些使用者的典型方法是创建一个中间人类来保存数据 . 在验证表单后填充类的实例,然后将实例传递给使用者 . 这样,如果表单中有更改,则只要收集相同的数据,您的使用者就会与这些更改隔离开来 .
一般规则是针对对象接口而不是它们的实现 . 只要你记住一些事情,无论你是做sig / slot还是直接函数调用都没关系:
Sig / slot不保证呼叫顺序,并且发出信号实质上意味着任何能够看到此对象的人都可以连接到其信号并选择此更改 . 如果你必须有子组件处理表单数据的保证顺序,那为什么甚至给维护程序员一个搞乱的选择呢?
其次,对象所在的位置无关紧要 . 有一天,当您的数据消费者变得非常复杂并且您希望根据某些情况(可能是用户权限,或者今天知道!)来捕获不同的数据时,那么您're going to want to do a re-arch. If your logic for getting the data to the consumers is highly dependent upon the objects residing in a certain way in your form, then you'做错了 .