繁体   English   中英

Qt / OO最佳实践:连接信号和插槽

[英]Qt/OO best practices: connecting signals and slots

尽管我绝对喜欢Qt,但我对Qt的经验比较了解。 我不确定的一件事是最好的地方是将信号连接到插槽。 这是我的带有触摸屏的小型设备上的示例:

我的QApplication拥有一个名为RadioModel的类。 我的QApplication还拥有我所谓的ViewController。 ViewController拥有视图-即构成用户界面的所有小部件。 UI小部件当然有一些层次结构。 顶级小部件是QHBoxLayout,其顶部具有指示器标签,底部具有QTabWidget。 QTabWidget具有3个屏幕,每个屏幕都包含QLabels,QGroupBoxes,QComboBoxes等内容。

当QGroupBoxes和QComboBoxes中的值更改时,需要向模型发出信号。 我最初的想法是要有一个像这样的链:

QRadioButton(QGroupBox的一部分)发出信号clicked(),这转到QTabWidget当前选项卡的SLOT,后者查看发送方以确定被单击的值(哪个单选按钮),然后发出自己的信号,例如RadioChanged。 该RadioChanged信号将连接到ViewController的RadioChanged信号,该信号又将连接到模型的UpdateRadio插槽。

一般而言,当与模型完全隔离的小部件发出感兴趣的信号时,拥有如此长的信号和插槽链以使该值更改返回模型是否公平? 最好将模型传递给ViewController以及可能传递给模型的某些对象,以使信号可以通过较短的路径连接?

谢谢-希望可以理解,但希望不要太主观。

我将我的实现为“控制器控制数据流”。 它从视图中获取信号。 然后,根据需要更新模型。 视图对模型一无所知,反之亦然。

我注意到您说过您要发信号通知每个用户输入更改。 这会非常低效,并且很难取消一半的更改。 我通常让用户更改所有字段,仅在按下“确定”按钮时更新模型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM