QML应用程序中的客户端实现

时间:2016-02-09 16:52:12

标签: qt client qml

我正在使用QML文件开发应用程序,这些文件由来自服务器的数据定期更新。

我有一个自定义的TCPClient类,我需要实现它来收听服务器的答案。

这就是它的样子:

tcp_client.loop()
   getDataFromServer()
   updateCurrentQMLPage(data)

QML页面会自动切换。

我正在考虑将我的班级设定为上下文优先级:

QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("tcp_client", TCPClient::get()); // static pointer

作为QML应用程序的初学者,我想知道这是否会使我的类依赖于QML代码,以及上面提到的算法是否有效。

有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

我不知道我是否完全理解你正在尝试做什么,但这可能是在qml中注册QObject派生的C ++类来实现TCP套接字的使用和声明qml中所述类的对象(或者可能是多个,具体取决于你的情况)。这样你就可以在qml中使用C ++声明的属性,函数和信号/槽。 This page有一些可以提供帮助的链接,因为C ++ / qml交互可以通过多种方式完成。

我现在使用类似的方法,但是我的后端不是TCP套接字,而是监听包含protobuf格式数据的消息的命名管道。我有一个C ++类聚合QLocalSocket(管道),每次有新数据时,消息被解析并作为信号中的参数传递给qml。 (qml对象甚至为所述信号自动生成一个插槽)。