问题标签 [qt-vs-addin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - Visual Studio 2017 QT:未找到默认 QT 版本
使用Windows 7,安装VS 2017社区,安装QT Visual Studio工具,下载QT:“qt-opensource-windows-x86-winrt-msvc2015-5.8.0”并添加winrt_x86_msvc2015和winrt_x64_msvc2015的路径。
当我启动一个新项目“QT GUI 应用程序”并单击 *.ui 文件时,会出现错误消息“未找到默认 QT 版本。请检查您的 Qt VS 工具设置。” 出现。
我做错了什么?QT下载是正确的吗?如果不是,您可以链接正确吗?哪个版本实际上是正确的?x86 还是 x64?我必须更改 Qt 默认设置中的某些内容吗?
c++ - Moc'ed 文件神秘地从 Visual Studio 项目中排除
我有几个使用 Qt Visual Studio 工具创建的 Visual Studio 项目(始终是项目创建时可用的最新版本,有些可以追溯到支持 Qt 5 的第一个版本,现在是 2.2.1)。所有项目都是用 VS 2010 编译的,尽管 IDE 是 VS 2017(到目前为止是 15.7.4)。
从一段时间开始,一些项目开始报告链接错误,例如
错误 LNK2001:未解析的外部符号“公共:静态结构 QMetaObject const MyQtClass::staticMetaObject”(?staticMetaObject@MyQtClass@@2UQMetaObject@@B)
对于此示例,MyQtClass.h
文件声明MyQtClass
并具有Q_OBJECT
宏。MyQtClass.cpp
定义方法。
经过快速检查后,我发现问题来自关联的 moc'ed 文件(moc_MyQtClass.cpp
例如上面的示例)被排除在当前配置的编译之外。这里是 .vcxproj 文件的摘录:
如果我修改 .vcxproj 文件以从调试配置中删除排除项,则该项目可以工作。
该问题仅在修改与 ed 类关联的主.cpp 文件时发生(在我的示例中)。保存此类文件时,会使用排除项修改 .vcxproj 文件。Q_OBJECT
MyQtClass.cpp
这个问题不会出现在我拥有的每个 Qt 项目中,但是一旦启动,每次修改关联的 .cpp 文件时都会出现此问题。我还没有找到它的模式。另外,公司的几个开发系统都出现这种情况,所以好像不是我电脑的问题。
我发现的唯一解决方法是丢弃项目文件中的更改,但是每次修改这些文件时丢弃并重新启动项目是一件令人头疼的事情(这恰好是很多次)。
有没有人遇到过同样的问题?任何想法如何解决它?
更新:仅当修改后的文件是与头文件(MyQtClass.cpp
在我的示例中)具有相同基本名称的 .cpp 文件时,才会出现此问题。如果我修改了另一个也定义了MyQtClass
类的更多方法的文件(例如MyQtClass_more_definitions.cpp
),则不会给出错误。
由于它似乎是 Qt Visual Studio Tools 中的一个错误,没有解决方法,我已经在QTVSADDINBUG-555下报告了它。
c++ - Compiling Qt projects in Qt/MsBuild format without Qt VS Tools installed
I have many Qt projects in Visual Studio, using the new Qt/MsBuild format provided by the Qt VS Tools. When compiling in my development environment, where I have the Qt VS Tools installed, everything works flawlessly (compiling from IDE and from command line).
We have a computer dedicated to nightly builds, where only the compiler and msbuild are available (no IDE nor Qt VS Tools are installed).
When compiling the projects in such computer we get an error:
QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly.
Followed by several lines such as
e:********\Preferences.h(4): fatal error C1083: Cannot open include file: 'ui_Preferences.h': No such file or directory
(Project contains Preferences.ui
).
How can I solve such errors when Qt VS Tools are not installed?
visual-studio-2017 - 将 Qt VS 工具与 vcpkg 安装的 qt 集成
平台:Visual Studio 2017 / Qt 5.11 / vcpkg 2018.10.20-nohash / Windows 10 1803 64
我已经使用 vcpkg 安装了 qt5 库./vcpkg install qt5:x64-windows
在 下${vcpkg_root}/installed/x64-windows/tools
,有 6 个子目录:
qt5:包含 2 个 conf 文件 qt_release.conf 和 qt_debug.conf,具有以下结构:
[路径]
Prefix = ${CURRENT_INSTALLED_DIR}
Documentation = share/qt5/doc
Headers = include
Libraries = debug/lib
Binaries = debug/tools/qt5
LibraryExecutables = debug/tools/qt5
Plugins = debug/plugins
Qml2Imports = debug/qml
Data = share/qt5/debug
ArchData = share/qt5/debug
HostData = share/qt5/debug
HostBinaries = tools/qt5qt5-3d、qt5-declarative、qt5-scxml、qt5-tools 和 qt5-xmlpatterns,它们都有一个空的 qt.conf 文件
我尝试在 Qt VS 工具的“添加新 Qt 版本”中添加所有可能的路径,每次出现错误时:
${SPECIFIED_PATH}/bin/qmake.exe is not found
. qmake.exe直接在qt5目录下,没有bin/子目录。
我还考虑添加 bin/ 子目录并将 qmake.exe 移动到那里,但是我发现当我阅读此线程https://github.com/Microsoft/vcpkg/issues/2643时会出现多个其他问题。
如何正确地将 qt 库集成到 QtVSTools 中?
c++ - Qt、CMake 和 Visual Studio 行为
我将我的一些 Qt 项目移植到其中,CMake
以使它们在不同的 IDE 中更加灵活。
唯一可悲的部分是CMake
,当我生成 时VS solution
,它无法与 Qt VS Extension 一起使用,因此效果不佳。
例如,如果我更改了一个.ui
文件,我需要重新构建项目以便在 GUI 中看到与我使用 VS Extension 生成的项目相比的更改,它会自动识别更改并重新 moc 类拥有该.ui
文件,而无需重新构建整个项目。
如果我查看 VS Extension 在 .vcxproj 文件中生成的项目配置,它会添加ItemDefinitionGroup
一些项目,如下所示:
并且项目中包含的每个类/文件都将根据类的类型(QtMoc
, QtUic
, QtRcc
)进行标记:
可能这就是让 Qt VS Extension 识别如何处理每个文件的原因,所以如果是QtUic
,那么它会检查.ui
文件中是否存在任何更改,如果有新的更改,它将重新编译 ui 文件,然后moc 属于该.ui
文件的类,然后才重新编译拥有该.ui
文件的实际类。
总之,有没有什么可能的方法可以让 CMake 生成一个类似于我在 CMake 中选择 VS 生成器时生成的一个 Qt VS Extension 的项目?我猜 CMake 在内部不支持这一点,因为他们倾向于抽象所有这些行为以使所有 VS 项目尽可能通用,无论使用什么框架,但 CMake 确实有支持 Qt 的标志,例如:
因此,我假设实施起来不会有太多工作。
可能我最好的选择是分叉 CMake 并自己重新实现这种行为?伪示例:
对不起,很长的帖子,但任何想法和帮助将不胜感激。谢谢!
c++ - 有没有办法在所有新的 Qt 项目上强制 QT_NO_FOREACH ?
由于在 C++11 中包含 range-for,我们一直在迁移 Qt 代码,因此它不再使用Q_FOREACH
/foreach
宏。为了强制迁移,我们手动将QT_NO_FOREACH
预处理器定义添加到我们检查的每个项目中。我们使用 Visual Studio 和 Qt VS Tools 插件。
我的问题是:有没有办法自动将这样的宏添加到新的 Qt 项目中?我检查了全局 Qt VS Tools 设置,但那里什么也没有。可能是我们可以更改加载项中的一些隐藏变量?
显然,我们可以手动添加它们,但我们希望有一些一次性解决方案。我们还考虑了属性页的使用,但它们要么是基于每个用户的(不是存储库的一部分,并且适用于所有项目,不仅是 Qt 的),或者必须手动包含在项目中(在这种情况下在项目设置中手动添加定义会更容易)。
注意:我们知道将表单迁移Q_FOREACH
到 range-for 的含义,以及如何正确地进行更改以避免 COW 惩罚。如果您想了解更多信息,请查看此处、此处和此处。
c++ - Qtvsaddin 清除已卸载的 Qt 版本
在我卸载 Qt 之前,我忘记在 qtvsaddin 中删除 Qt 版本。因此,qtvsaddin 中存在无效的 Qt 版本。如果我不重新安装 Qt,我该怎么办?谢谢。
c++ - Visual Studio QT 项目 MainForm.ui 需要一个声明
我在 QT Creator 中有一个项目,并正在尝试将其导入 Visual Studio 2019。我已经解决了所有问题,除了错误 E0169 预期在 mainwindow.ui 中声明。此错误的问题在于没有突出显示错误所在的位置。我尝试右键单击并编译 mainwindow.ui 文件,它可以工作并生成 ui_mainwindow.h 以及将编译后的代码直接从 QT Designer 复制到 ui_mainwindow.h ...
具体错误是指向mainwindow.ui。当我双击它时,QTDesigner 被打开,所以没有帮助。(我在 XML 编辑器中查看过它,看不到问题)我不明白发生了什么,因为 mainwindow.ui 只是一个 xml 文件,所以怎么能编译器有问题。我不相信这是代码的问题,我相信它是 VS 中的一个设置....
其他人有这样的问题吗?让我知道是否有任何设置或代码可以帮助诊断。
到目前为止的步骤...安装的QT工具导入项目重新定位解决方案到10.xxxxx
谢谢