使用 Qt 我有一个带有几个 QPushButton 按钮的 QStackedWidget。小部件的父小部件是 QMainWindow。在 QStackedWidget 里面我也有一些 QLineEdit。我想做的很简单:验证包含文本框的表单,如果一切正常,调用将处理数据的自定义类的函数。该类的实例是在我的 QMainWindow 类中创建的。调用该类方法的最佳方法是什么?我应该使用 Qt 的信号/插槽机制将我的自定义类连接到 QStackedWidget 内的小部件实例吗?
问问题
159 次
1 回答
3
您可以根据需要多次从QValidator派生,并在每个需要验证的字段上安装验证器。这样,您可以确保该字段为空或包含有效条目。
在处理您的数据之前,请确保所有适当的字段都有数据,然后保证您有一个有效的表单。
将数据从表单传递给表单数据的某些消费者的典型方法是创建一个中间人类来保存数据。验证表单后填充类的实例,然后将该实例传递给使用者。这样,如果表单发生更改,您的消费者将与这些更改隔离,前提是正在收集相同的数据。
一般规则是针对对象接口工作,而不是它们的实现。只要记住一些事情,您是执行 sig/slot 还是直接函数调用都没有关系:
Sig/slot 不保证调用顺序,并且发出信号本质上意味着任何可以看到这个对象的人都可以连接到它的信号并接收这个变化。如果您必须保证子组件处理表单数据的顺序,那么为什么还要让维护程序员选择搞砸呢?
其次,对象所在的位置无关紧要。有一天,当您的数据消费者变得非常复杂,并且您想根据某些情况(可能是用户权限,或者今天的日期,或者当前的温度,我不知道!)来获取不同的数据时,那么您将想做一个重新拱。如果您将数据提供给消费者的逻辑高度依赖于以某种方式驻留在表单中的对象,那么您做错了。
于 2012-04-13T13:12:36.260 回答