2012-04-13 88 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

相关问题