如何将 Qt 集成到现有的 C++ 项目中

Posted

技术标签:

【中文标题】如何将 Qt 集成到现有的 C++ 项目中【英文标题】:How to integrate Qt into an existing C++ project 【发布时间】:2019-05-21 14:50:45 【问题描述】:

我正在自学 C++。我已经完成了许多教程,这些教程都是控制台项目,并且我一直在使用 Visual Studio Community 2019。现在我开始为一位同事处理一个项目,该项目应该解析他的收件箱中的特定邮件并总结其内容。

解析的底层代码已经在工作,现在我想创建一个简单的 UI 来显示数据,大多数人似乎建议使用 Qt 来完成这项工作。所以我也做了一些关于 Qt 的教程,它们都包含 Qt Creator。

现在我不介意 Qt 创建者,我只想在 Visual Studio 上继续我的项目,因为我已经非常熟悉它了。我已经将 Qt VS 工具添加到了我的 Visual Studio 中,并且我已经完成了这个线程中描述的步骤:add Qt to existing Visual Studio c++ project 但是现在我完全不知道我需要如何继续,我似乎找不到任何东西关于如何进行。

是否可以将我的项目完全转换为 Qt 应用程序,还是必须从头开始?如何在不使用 Qt 创建器的情况下显示 Qt 生成的窗口?我想我需要使用 QMake 工具来做一些事情,但我什至无法弄清楚我会如何做到这一点......

谁能给我一份详细的指南,告诉我应该如何进行或将我链接到一个?

【问题讨论】:

你自己安装了QT库吗? “我想我需要使用 QMake 工具” - 不。您不需要使用 qmake 或 qtcreator 或类似的东西来构建使用 Qt 的程序。您只需要一个文本编辑器和一个编译器/链接器。 Visual Studio 可以正常工作,记事本和 cmd shell 也可以。我个人使用 Emacs 进行编辑,使用 g++ 作为编译器,使用 CMake + ninja 作为构建系统来驱动基于 Qt 的项目的编译过程。 @Tom 是的,我有,这一步伴随着我所做的教程(确切地说是 Qt Wiki 上的 Qt for Beginners)。我还根据我原始帖子中的链接将它包含在我的项目中。我只是不知道从这一点开始,下一步我的想法是#inlcude 一些 Qt 类,但是 VS 抱怨它无法打开 例如... 我强烈建议您使用 qmake,这将使之后更容易将应用程序 / gui 移植到 linux,而且它比 make 或普通的 Visual Studio 构建机制要容易得多。您需要最新的 Visual Studio 更新,VS QT 插件,然后您还需要 QT 本身,它提供所有基本实用程序,如 qmake 等。我的建议是单独开发 gui,在按钮功能中使用 printfs,然后挂钩现有在 gui 完成后,将代码放入这些函数调用中。 【参考方案1】:

您需要执行以下操作:

    Download and Install Qt。听起来你已经结束了。 包括您将使用的 Qt 部分。例如,对于一个简单的窗口,您将包含#include <QWidget>,对于一个按钮,您将包含#include <QPushButton>。你总是需要做#include <QApplication> 这是一个full list 你可以使用的可能的东西。请注意,Qt 不仅仅是一个 gui 库。 像这样创建一个主函数:void main (int argc, char **argv) 在您的 main 中,您必须像这样创建应用程序实例:QApplication app(argc, argv); 实例化小部件。例如:auto myWindow=new QWidget() ; auto myButton = new QPushButton(myWindow) ; 显示您的窗口:myWindow->show(); 开始事件循环:return app.exec(); 现在您的代码已准备就绪,请尝试构建并链接到 Qt 库。我不确定如何在 VS 中执行此操作(我主要熟悉 Linux)。

就像 cmets 所说,有无数种方法可以启动和运行 Qt。任何编辑器/IDE 和任何构建系统都可能让你到达那里,但是,我建议你使用 QtCreator。为什么?因为将现有 C++ 代码导入 QtCreator 项目将比在现有 VS 项目中设置 Qt 更简单。 QtCreator 在 Qt 方面非常简单,即插即用,比 VS 更是如此。

对于一个 QtCreator 带有一堆开箱即用的示例项目,您只需单击并按“播放”即可构建和运行它们而无需任何设置。适应这一点比尝试在 VS 中手动设置一堆东西要容易得多。

QtCreator 中的示例:https://youtu.be/R6zWLfHIYJw?t=40

仅显示一个按钮的完整示例:

#include <QApplication>
#include <QPushButton>

int main(int argc, char **argv)

 QApplication app (argc, argv);

 QPushButton button ("Hello world !");
 button.show();

 return app.exec();

【讨论】:

谢谢Lennart,这个回答对我帮助很大。我已经从 wiki 上的 Qt 教程中推测了大部分内容,但很高兴看到我走在正确的道路上。可悲的是,我仍然无法让它工作:由于某种神秘的原因,我的 Visual Studio 既不能打开 也不能打开 尽管我将 Qt 的包含文件夹添加到 VS 的附加包含目录及其 lib 文件夹链接器附加库目录。必须有一些步骤我错过了,但我无法弄清楚它可能是什么......

以上是关于如何将 Qt 集成到现有的 C++ 项目中的主要内容,如果未能解决你的问题,请参考以下文章

Cocoa:将 NSApplication 集成到现有的 c++ 主循环中

如何将人行横道集成到现有的离子目标c项目中

如何将来自 AWS Mobile Hub 示例项目的推送服务集成到现有的 android 项目中?

如何将 qml ScatterSeries 添加到现有的 qml 定义的 ChartView?

如何将 midi 导出集成到现有的 lilypond 分数中

将 React Native 代码集成到现有的 android 项目中