Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将相关数据从一个模型提取到另一个模型_C++_Qt_Qml - Fatal编程技术网

C++ 如何将相关数据从一个模型提取到另一个模型

C++ 如何将相关数据从一个模型提取到另一个模型,c++,qt,qml,C++,Qt,Qml,我正在开发一个应用程序,其中Qt/c++作为控制器,QML组件作为视图。应用程序将以以下方式显示彼此相关的设备和频道: +--------------------+ | DEVICES | |--------------------| | MAC |<-----------------------------------------------+ | ... |

我正在开发一个应用程序,其中Qt/c++作为控制器,QML组件作为视图。应用程序将以以下方式显示彼此相关的设备频道

+--------------------+ | DEVICES | |--------------------| | MAC |<-----------------------------------------------+ | ... | | | ID_CURRENT_CHANNEL |+--+ | | ... | | +----------------------+ | +--------------------+ | | AUDIO CHANNELS | | | |----------------------| | +---------->| ID | | | ... | | | MAC_SOURCE_DEVICE |+--------+ | ... | +----------------------+ +--------------------+ |装置| |--------------------| |MAC | | ID || | ... | | |MAC_源设备|+--------+ | ... | +----------------------+ 所以一个设备可能正在播放一个音频频道,而一个频道有一个源设备

我知道如何将数据从一个“域”公开到另一个“域”,所以我为通道和设备创建了模型,并设法将它们公开到QML视图。但当我想从一个模型到另一个模型获取相关数据并使用QML组件显示数据时,我的困境(和问题)就出现了。我找到三种方法:

  • 创建一个新的混合设备和通道模型,其中包含所有数据的角色,如通道id、名称、质量和。。。源设备名称、mac等。我不喜欢此解决方案

  • 将信号(macSelectedChanged)创建到视图中,并从控制器加载上下文属性和数据(deviceSelected),作为对发出信号的响应

  • 使用javascript在视图中查找相关数据。我有一个小主意如何做到这一点,我认为这是最一致的方式,但性能会降低

以下哪种方法是最好的?还有其他更好的吗?我在寻找可用性和性能方面的答案


提前感谢。

如果您需要一个视图,那么您应该有一个模型,其中包含来自两个源的数据,因此第一个解决方案是适当的(我知道,有点令人难以接受)。如果您需要同步两个视图,那么第二个解决方案就可以了。@Bodgan感谢您的评论。我将采取两种方式:当我想要显示两者并使用一个选择的改变信号彼此关联时,构建简单的模型;当我只想展示其中一个模型的全部信息时,可以构建复杂的模型。如果你想要一些回购协议,请将你的评论作为答案发布。