如何将 Qt 包含在 Visual Studio IDE 中?

问题描述 投票:0回答:1

我对 C++ 很陌生 我希望能够使用 Qt 库、qtcore 和 qtwidgets 来制作 GUI 应用程序。我也想使用 Visual Studio IDE。

我已经从qt安装程序下载了Qt库,它位于我的c盘中。我有qt版本6.6.0

在6.6.0文件中我有以下文件:

mingw_64 msvc2019_64 msvc2019_arm64 来源

我已将 %QTDIR%\lib 和 %QTDIR% 添加到我的路径中。

基本上我想要的是一个解决方案,例如当我在 main.cpp 文件中有 #include 时。

我看过 youtube 和一些关于堆栈溢出的帖子,并尝试了一些解决方案,但无法得到我想要的工作......

我使用的是 Windows 11

qt dll
1个回答
0
投票

使用 Qt VS 工具扩展的简单方法

扩展程序完成了大部分工作。如果您对 Qt/VS 非常陌生,那就应该这样做(但我建议您阅读我的答案的下一部分以熟悉正在发生的事情):

  1. 转到 Visual Studio,菜单“扩展”>“管理扩展”
  2. 在 Visual Studio 市场中搜索 Qt Visual Studio 工具

安装后:

  1. 您将在项目类型“Qt”下找到新的项目模板。
  2. main(int, char**)
    功能+默认对象(小部件、QML窗口等)会自动创建。
    在项目属性中,您将找到许多菜单,可以更轻松地管理项目的参数。
  3. 向项目添加新元素时,您会发现新类型,例如“Qt 类”或“Qt Widgets 类”。
    选择这些会自动创建对
    moc
    uic
    的调用,仅举较常见的一些。

手动方式

当然,也可以在 Visual Studio 中手动配置所有内容,如果您不想依赖扩展或者您 在不允许安装 Qt 扩展的公司工作。
明显的缺点是,除了选择正确的项目之外,还有更多的配置工作要做:

  1. 可选但强烈建议:为了稍后节省时间,请打开“视图”>“其他窗口”>“属性管理器”。
    在用户宏中,创建属性表(您需要 1 个用于调试,1 个用于发布)以供项目存储:

    • QtVersion(在您的情况下为 6.6.0)
      当您升级到更高版本的 Qt 时,您只需更改此变量即可影响其他所有内容)。
    • Qt 安装路径(相当于您的
      %QTDIR%
      ,但我发现在那里创建它比在环境变量中创建更方便,例如与其他人共享您的 VS 配置)。
      不要忘记在中包含
      $(QtVersion)
      变量定义,否则上面的内容将毫无用处。
    • 一个变量,用于存储对
      moc
      uic
      和其他具有默认参数的工具的调用(调试和发布的调用可能有所不同)。
      除了上面引用的更常见的工具之外,您还需要创建
       WinDeployQtExe
      分别拨打
      "$(QTDIR)\bin\windeployqt.exe" --debug
      /
      "$(QTDIR)\bin\windeployqt.exe" --release
    • 您要使用的每个
      .lib
      文件的变量(例如
      Qt6Cored.lib
      用于调试,
      Qt6Core.lib
      用于发布)。

    如果完成所有这些操作,其余配置可以立即应用于所有配置。

  2. 回到项目属性,VC++目录:

    • 添加
      $(QTDIR)\include
      作为包含目录(如果您跳过了上述可选步骤,则添加
      %QTDIR%\include
      ;对于我的其余答案,我假设您已应用它)。
    • 添加
      $(QTDIR)\lib
      作为库目录。
  3. 在常规下,确保 C++ 语言标准为

    ISO C++ 17
    (Qt6 必需)。

  4. 在 C++ > 命令行下,添加附加选项

    /Zc:__cplusplus

  5. 在“链接器”>“输入”下,将必要的 Qt 库(例如

    $(QtCoreLib);$(QtGuiLib);$(QtWidgetsLib)
    )添加到“附加依赖项”

  6. 对于您需要编译的每个标头 ui、qrc、ts、... 文件,请转到它们的属性:

    1. 将项目类型更改为
      Custom build tool
    2. 填写命令行(例如,moc
      .h
      文件:
      $(Qtmoc) %(Fullpath) -o ".\GeneratedFiles\$(Configuration)\moc_%(Filename).cpp"
      )、描述、输出列表和其他依赖项(例如,
      $(QTDIR)\bin\moc.exe;
      )。

    选择

    All configurations
    All platforms
    后,不要忘记执行上述操作。
    文件编译完成后,右键单击您的项目,选择“添加”>“现有项目”,然后选择由自定义构建工具编译的所有文件。请随意将文件存储在新过滤器中(右键单击,添加>新过滤器)。

  7. 在“构建事件”>“构建后事件”下添加 2 个命令行以将 DLL 复制到输出目录:

    SET "VCINSTALLDIR=$(VCInstallDir)"

    $(WinDeployQtExe) --compiler-runtime --no-translations --no-system-d3d-compiler "$(OutDir)$(TargetFileName)"


在这两种解决方案中,您仍然需要手动执行一些操作。
例如,在我的项目中,我必须一次性编译 PSQL 驱动程序 dll,然后手动将其复制到我的 outdir 的

sqldrivers
中。

© www.soinside.com 2019 - 2024. All rights reserved.