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

4

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

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

现在我不介意Qt creator,我只是想继续使用Visual Studio进行我的项目,因为我已经非常熟悉它。我已经将Qt VS Tools添加到了我的Visual Studio中,并且已经按照此线程中描述的步骤进行了操作:add Qt to existing Visual Studio c++ project但现在我完全不知道该如何继续,而且似乎找不到任何有关如何继续的信息。

是否可能将我的项目转换为Qt应用程序,还是我必须从头开始?如何在不使用Qt creator的情况下显示由Qt生成的窗口?我认为我需要使用QMake工具来完成其中的一些工作,但我甚至无法弄清楚如何做到这一点……

有人能给我提供一个详细的指南,告诉我应该如何继续或者提供链接吗?


你是否已经安装了QT库本身? - Tom
不需要使用qmake或qtcreator等工具来构建使用Qt的程序。你只需要一个文本编辑器和编译器/链接器。Visual Studio可以很好地工作,notepad和cmd shell也可以。例如我个人使用Emacs进行编辑,g ++作为编译器,以及CMake + ninja作为构建系统来驱动基于Qt项目的编译过程。 - Jesper Juhl
@Tom 是的,我做教程时就完成了这一步骤(确切地说是在Qt Wiki上的“Qt初学者”教程)。我还按照原帖中的链接将其包含在我的项目中。但我不知道该从哪里继续,我想下一步应该是#include一些Qt类,但VS抱怨无法打开<QApplication>等类... - Estelyen
我强烈推荐您使用qmake,这将使得将应用程序 / gui 移植到 Linux 更加容易,并且比 make 或常规 Visual Studio 构建机制要容易得多。您需要安装最新的 Visual Studio 更新、VS QT 插件,然后还需要QT本身,它提供了所有基础实用工具,如 qmake等。我的建议是单独开发 GUI,并在按钮函数中使用 printf,然后在 GUI 完成后将现有代码连接到这些函数调用中。 - Owl
1个回答

2
你需要执行以下步骤:
  1. 下载并安装Qt。听起来你已经完成了这个步骤。
  2. 包含你将使用的Qt部分。例如,对于一个简单的窗口,你需要包含#include <QWidget>,对于一个按钮,你需要包含#include <QPushButton>。你总是需要#include <QApplication>。这里是一个完整列表,列出了你可以使用的可能性。请注意,Qt不仅仅是一个GUI库。
  3. 创建一个主函数,如下所示:void main(int argc, char **argv){}
  4. 在你的main函数内,必须像这样创建应用程序实例:QApplication app(argc, argv);
  5. 实例化小部件。例如:auto myWindow = new QWidget(); auto myButton = new QPushButton(myWindow);
  6. 显示你的窗口:myWindow->show();
  7. 开始事件循环:return app.exec();
  8. 现在你的代码准备好了,尝试构建并链接到Qt库。如何在VS中做到这一点我不确定(我更熟悉Linux)。

如评论所说,有无数种方法可以使用Qt。任何编辑器/IDE和任何构建系统都可能会让你成功,但是我建议你使用QtCreator。为什么?因为将现有的C++代码导入到QtCreator项目中比在现有的VS项目中设置Qt要简单。当涉及到Qt的内容时,QtCreator非常简单易用,比VS更加方便。

首先,QtCreator自带了一堆示例项目,你只需要点击它们并按下“play”按钮,就可以在不进行任何设置的情况下构建和运行它们。从这些示例中进行调整比在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,你的回答对我帮助很大。我已经从Qt维基教程中猜到了大部分内容,但很高兴能看到我正在正确的道路上。不幸的是,我仍然无法让它工作:出于某些神秘的原因,我的Visual Studio既无法打开<QWidget>也无法打开<QApplication>,尽管我已将Qt的include文件夹添加到VS的附加包含目录中,将其lib文件夹添加到链接器的附加库目录中。肯定有一些我错过的步骤,但我想不出可能是什么... - Estelyen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接