【问题标题】:Adding Qt to a C-Socket program?将 Qt 添加到 C-Socket 程序中?
【发布时间】:2019-07-13 09:18:48
【问题描述】:

我正在开发一个用 C 编写的简单套接字应用程序,它允许两个成员使用基本的命令行提示符通过 Internet 进行通信。

我想为它添加一个合适的 GUI,只是为了使用一个像样的 UI,而不是基本的标准输入/输出。

现在我正在使用 Cygwin 进行开发以使用 POSIX 线程和套接字。有没有办法把它连接到 Qt 上?

【问题讨论】:

  • 嗯,使用 QT 需要将程序从 C 重写为 C++...
  • @Shawn 为什么会这样?我认为 C++ 向后兼容?它想象着我只需要将我已经存在的 C 项目嵌入到 QT 中。
  • 如果您不想重新设计您的 C 程序,一种可能的解决方法是让您的 Qt GUI 作为子进程启动您的 C 程序(通过 QProcess 类)和读取子进程的标准输出并写入其标准输入。 (即它将充当原始程序的“包装器”,而不是直接包含原始代码)
  • 这两种语言之间有很多相似之处,但是编写 C 遵循那些无效 C++ 的语言最佳实践是微不足道的。
  • 我使用 C 和 C++ 超过 25 年。通常,将程序从 C 编译和移植到 C++ 一点也不难。您应该能够将您的 C 代码移至 C++ 并使用 Qt,而无需太多麻烦。当然,使用 C++,您倾向于使用 STL、智能指针等,这使您的代码更易于编写和维护。但请记住,保持简单 - 简单几乎总是好的!

标签: c++ c qt sockets pthreads


【解决方案1】:

正如 Shawn 上面提到的,使用 Qt 需要使用基于对象的语言(在您的情况下可能是 C++)。但还有另一个考虑因素——Qt 是一个多平台框架;它可以被认为是你的应用程序和它运行的操作系统之间的一层。所以,虽然你的问题的字面答案是“是的”,但如果你打算使用 Qt 来实现它的 UI 功能,你最好(IMO)使用它的套接字工具QAbstractSocket,而不是使用本机(或 Cygwin)套接字 API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多