我对Qt体验相对较轻,但我非常喜欢它。我不确定的一件事是将信号连接到插槽的最佳位置。以下是我带触摸屏的小型设备的示例:
我有一个名为RadioModel的类,由我的QApplication拥有。我的QApplication也拥有我称之为ViewController的东西。 ViewController拥有视图 - 即构成用户界面的所有小部件。当然,UI小部件有一些层次结构。顶级窗口小部件是QHBoxLayout,顶部有指示标签,底部有QTabWidget。 QTabWidget有3个屏幕,每个屏幕都有QLabel,QGroupBoxes,QComboBoxes等。
当QGroupBox和QComboBox中的值发生变化时,需要对模型进行信号通知。我最初的想法是拥有这样的链条:
QRadioButton(QGroupBox的一部分)信号clicked(),这将转到QTabWidget的当前标签的SLOT,它查看发送方以确定被点击的值(哪个单选按钮),然后发出自己的信号,如RadioChanged。此RadioChanged信号将连接到ViewController的RadioChanged信号,该信号又将连接到Model的UpdateRadio插槽。
一般来说,当与模型完全隔离的小部件发出感兴趣的信号时,是否可以通过这个长链信号和插槽将该值更改回模型?将模型传递给ViewController以及可能的某些对象以便信号可以用更短的路径连接会更好吗?
谢谢 - 希望这是可以理解的,希望不要过于主观。
答案 0 :(得分:2)
我实现了我的控制器控制数据的流量。它从视图中获取信号。然后根据需要更新模型。视图对模型一无所知,反之亦然。
我注意到你说你发出了每个用户输入变化的信号。这可能效率非常低,并且很难取消半成品更改。我通常让用户更改所有字段,只在按下确定按钮时更新模型。