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

标签 c++ qt visual-studio-2019

我正在自学 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 工具来完成其中的一些工作,但我什至不知道该怎么做......

任何人都可以给我一份详细的指南,告诉我应该如何继续或将我链接到一个指南吗?

最佳答案

您需要执行以下操作:

  1. Download and Install Qt .听起来你已经把这个包起来了。
  2. 包括您将使用的 Qt 部分。例如,对于一个简单的窗口,您将包括 #include <QWidget>对于一个按钮,你会做 #include <QPushButton> .你总是需要做 #include <QApplication>这是一个full list您可以使用的可能的东西。请注意,Qt 不仅仅是一个图形用户界面库。
  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 附带了一堆开箱即用的示例项目,您只需单击并按“播放”,它就会构建并运行它们,而无需任何设置。从中进行调整比尝试在 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();
}

关于c++ - 如何将 Qt 集成到现有的 C++ 项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56240966/

相关文章:

visual-studio-2019 - VS 2019更新到16.8.4打破了我的每一个解决方案

c++ - 生成直到给定数字 N 的步进数字

c++ - QPropertyAnimation 没有动画

qt - QtWidgets 应用程序的虚拟键盘或屏幕键盘?

c++ - 为什么我的类(class)被认为是抽象的?

.net - 在Visual Studio中更改目标框架

c++ - VS-2019 程序在某些服务器上的第一个浮点指令处崩溃

c++ - 使用 vector<char> 实现串行缓冲区的最佳方法是什么?

c++ - 在条件变量上发出信号之前是否必须锁定互斥锁?

c++ - 关于使用#pragma region 在 Visual Studio 中折叠代码块