Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.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++ 如何设计一个具有Qt前端和可分离后端的程序?_C++_Qt_Components_Parallel Processing - Fatal编程技术网

C++ 如何设计一个具有Qt前端和可分离后端的程序?

C++ 如何设计一个具有Qt前端和可分离后端的程序?,c++,qt,components,parallel-processing,C++,Qt,Components,Parallel Processing,我想为一个也需要从命令行使用的程序开发一个Qt前端。首先,我想用一个参数来解决这个问题(如果它被设置,那么UI就被创建了,否则只写在代码> STD::Outs< /Cord>),但是我有一种感觉:我应该分离那些组件,只为后端逻辑< /强>创建程序(如果可能的话,使用纯C++)。在这种情况下,Qt程序可以读取并理解后端的输出。如果需要,后端可以单独运行,并在std::out上写入结果 从前端调用后端程序而不阻塞的最优雅方式是什么? 我的第一个想法是创建一个子进程,使用exec调用后端,然后如果后端

我想为一个也需要从命令行使用的程序开发一个Qt前端。首先,我想用一个参数来解决这个问题(如果它被设置,那么UI就被创建了,否则只写在代码> STD::Outs< /Cord>),但是我有一种感觉:<强>我应该分离那些组件,只为<强>后端逻辑< /强>创建程序(如果可能的话,使用纯C++)。在这种情况下,Qt程序可以读取并理解后端的输出。如果需要,后端可以单独运行,并在
std::out
上写入结果

从前端调用后端程序而不阻塞的最优雅方式是什么?

我的第一个想法是创建一个子进程,使用exec调用后端,然后如果后端完成,它应该向前端发送信号并阻塞,直到前端完成读取,读取可以通过管道或类似的方式完成


这是一个好方法吗?任何其他实现技巧?

您可以使用QxORM,这是一种基于Qt的ORM。

Qt具有多个允许异步执行的功能:

  • :一种比回拨更可靠的通信方式。以后可以使用排队连接触发插槽
  • :基本上允许您在线程池中运行某些方法
  • 检查这个

我的想法是将后端设计为API。具体地说,在每个组件中,您需要一个对象子集(可能只有一个),所有与外部组件的通信都通过该子集进行。避免在前端中放置太多逻辑,避免基于视觉外观编写后端。这有点模糊:P.

如果我是你,我会选择两种解决方案之一

首先,linux的“一切都是文件”心态: 创建两个后端和前端定期检查的文件,其中一个前端向后端请求数据或执行某些操作。还有一个输出查询结果的窗口。可以使用XML创建一个“结果”字段和一个“请求id”字段

其次,您可以在客户机-服务器配置中编写它们,为了安全起见,让服务器绑定到127.0.0.1


祝你好运:)

我可能错了,但是当我去线程时,项目需要作为一个单元编译/运行,对吗?我希望将我的项目分为两个程序,后端可以单独运行,以防它使用
std::out
编写工作结果。也许调用后端会让人困惑。你的意思是你想要一个QtGUI应用程序来调用执行实际工作的命令行可执行文件吗?那样的话,你可以用。