【问题标题】:Data transfer between Qt and a C++ codeQt 和 C++ 代码之间的数据传输
【发布时间】:2012-06-25 21:23:04
【问题描述】:

我有一个 C++ 代码,现在我正在考虑用 Qt 准备一个 UI,因为它的语言也是 C++。在尝试这样做之前,我想知道如何在我的代码和 UI 代码之间传输数据。我的意思是,我不想将变量写入文本文件并让 UI 读取它。相反,我希望这在内部完成。我知道这是可能的,但不知道从哪里开始。有什么想法吗?

【问题讨论】:

  • 如果您的代码和 Qt 代码将在同一个线程中运行,则标准 C++ 数据传递方法(通过函数调用参数、全局变量等传递)应该可以正常工作。或者您是否打算将 GUI 作为与现有代码分开的进程运行?
  • @JeremyFriesner:是的,他们应该分开工作。我不想把它们混在一起。
  • 所以基本上,您正在寻找 C++ 中的双向进程间通信。您的目标是什么平台?
  • 嗯.. 现在我想起来了。 QProcess 还不够吗?您可以使用所需的任何参数轻松调用命令行程序,通过标准输入写入它,然后读回标准输出/错误。或者,您的沟通要求是否比这更复杂?
  • 你为什么要与其他代码分开运行 gui?两个线程我会理解,但有两个进程??

标签: c++ qt ipc data-transfer


【解决方案1】:

Qt 有一个用于此目的的信号和槽机制。看看这里的例子http://qt-project.org/doc/qt-5.0/examples-widgets.html 如果 Gui 在单独的线程中运行,这也有效,但请注意正确设置线程、信号和插槽:http://labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/

【讨论】:

    【解决方案2】:

    对于 GUI 进程和命令行进程之间的基本通信,我会使用 QProcess。它提供了使用参数启动可执行文件、读取标准输出和标准错误、写入标准输入以及程序终止通知的工具。它是跨平台的,几乎可以与任何为命令行交互而设计的东西一起使用。

    【讨论】:

      猜你喜欢
      • 2017-02-25
      • 2021-12-18
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多