我对Qt的体验相对较轻,虽然我绝对喜欢它。有一件事我不确定,那就是最好的地方是把信号连接到插槽上。下面是我的带有触摸屏的小型设备的一个例子:
我有一个名为RadioModel的类,它属于我的QApplication。我的QApplication也拥有我所说的ViewController。ViewController拥有视图-即构成用户界面的所有小部件。当然,UI小部件有一些层次结构。顶层小部件是一个QHBoxLayout,它在顶部有指示器标签,在底部有一个QTabWidget。QTabWidget有3个屏幕,每个屏幕上都有QLabels、QGroupBoxes、QComboBoxes等。
当QGroupBoxes和QComboBoxes中的值发生变化时,需要向模型发出信号。我最初的想法是有一条这样的链条:
QRadioButton (QGroupBox的一部分)信号单击(),这将转到QTabWidget当前选项卡的插槽,该选项卡查看发送方以确定被单击的值(哪个单选按钮),然后发出自己的信号,如RadioChanged。这个RadioChanged信号将连接到ViewController的RadioChanged信号,而后者又将连接到模型的UpdateRadio插槽。
一般来说,当一个与模型隔离的小部件发出感兴趣的信号时,有这么长的信号链和槽来使这个值回到模型中是否公平?是否更好地将模型传递给ViewController,并可能将其某些对象传递给更短的路径来连接信号?
谢谢-希望这是可以理解的,希望不要太主观。
发布于 2015-04-14 21:40:39
我实现了我的“控制器控制数据流”。它从视野中得到信号。然后根据需要更新模型。视图对模型一无所知,反之亦然。
我注意到你说你在发送每个用户输入更改的信号。这可能是非常低效的,并使它很难取消一半的改变。我通常让用户更改所有字段,只有当按下OK按钮时才更新模型。
https://stackoverflow.com/questions/29636263
复制相似问题