qt vs addin与vs配置环境的注意事项

转自:https://www.jianshu.com/p/9dcb5e1bf3aa

 

1. 将普通Win32项目转换为Qt项目

http://stackoverflow.com/questions/2088315/how-to-convert-a-regular-win32-vc-vcproj-project-to-a-qt-project

  • Right click on your project in "Solution Explorer", click on "Unload Project"
  • Right click on your project in "Solution Explorer", click on "Edit .vcxproj"
  • Add line <Keyword>Qt4VSv1.0</Keyword> between the tags <PropertyGroup Label="Globals"> and </PropertyGroup>.
  • Right click on your project in "Solution Explorer", click on "Reload Project"
  • Right click on your project in "Solution Explorer", click on "Convert project to Qt Add-in project"

2. Visual Assist

2.1 Visual Assist X对Qt的支持

在启动VS前必须设置QTDIR这个环境变量,可以使用一个批处理文件启动Visual Studio, 脚本内容如下:


   
   
  1. set QTDIR=C:\Qt\Qt5.5.1-VS2013\5.5\msvc2013
  2. echo %QTDIR%
  3. cd "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\"
  4. start devenv.exe

2.2 Visual Assist配置

VS2010不要要配置,VS2013需要配置

参考链接

需要包含的目录

在(VAssistX|Visual Assist X Options|Projects|C/C++ Directories)中设置, Platform选择Custom

需要包含的头文件目录列表如下所示:(Qt 5.5.1 + VS2010)

 

$(QTDIR)\include
$(QTDIR)\include\ActiveQt
$(QTDIR)\include\Enginio
$(QTDIR)\include\Qt3DCore
$(QTDIR)\include\Qt3DInput
$(QTDIR)\include\Qt3DQuick
$(QTDIR)\include\Qt3DQuickRenderer
$(QTDIR)\include\Qt3DRenderer
$(QTDIR)\include\QtANGLE
$(QTDIR)\include\QtBluetooth
$(QTDIR)\include\QtCLucene
$(QTDIR)\include\QtConcurrent
$(QTDIR)\include\QtCore
$(QTDIR)\include\QtDBus
$(QTDIR)\include\QtDeclarative
$(QTDIR)\include\QtDesigner
$(QTDIR)\include\QtDesignerComponents
$(QTDIR)\include\QtGui
$(QTDIR)\include\QtHelp
$(QTDIR)\include\QtLocation
$(QTDIR)\include\QtMultimedia
$(QTDIR)\include\QtMultimediaQuick_p
$(QTDIR)\include\QtMultimediaWidgets
$(QTDIR)\include\QtNetwork
$(QTDIR)\include\QtNfc
$(QTDIR)\include\QtOpenGL
$(QTDIR)\include\QtOpenGLExtensions
$(QTDIR)\include\QtPlatformHeaders
$(QTDIR)\include\QtPlatformSupport
$(QTDIR)\include\QtPositioning
$(QTDIR)\include\QtPrintSupport
$(QTDIR)\include\QtQml
$(QTDIR)\include\QtQmlDevTools
$(QTDIR)\include\QtQuick
$(QTDIR)\include\QtQuickParticles
$(QTDIR)\include\QtQuickTest
$(QTDIR)\include\QtQuickWidgets
$(QTDIR)\include\QtScript
$(QTDIR)\include\QtScriptTools
$(QTDIR)\include\QtSensors
$(QTDIR)\include\QtSerialPort
$(QTDIR)\include\QtSql
$(QTDIR)\include\QtSvg
$(QTDIR)\include\QtTest
$(QTDIR)\include\QtUiPlugin
$(QTDIR)\include\QtUiTools
$(QTDIR)\include\QtWebChannel
$(QTDIR)\include\QtWebKit
$(QTDIR)\include\QtWebKitWidgets
$(QTDIR)\include\QtWebSockets
$(QTDIR)\include\QtWidgets
$(QTDIR)\include\QtWinExtras
$(QTDIR)\include\QtXml
$(QTDIR)\include\QtXmlPatterns
$(QTDIR)\include\QtZlib
$(QTDIR)\mkspecs\win32-msvc2005

需要包含的源文件目录如下:

 

$(QTDIR)..\Src

3. 常见错误

3.1 编译错误

Q_INTERFACES undefined interface

在创建工程的时候,如果在“C/C++ -> 常规 -> 附加包含目录”等配置好之前,就添加源代码、头文件,就可能会造成这个错误。

解决办法: 删除已经添加的文件,重新添加

3.2 运行时错误

  • 无法加载插件。无法加载插件的原因可能有很多,例如:

    • 插件目录配置错误
    • 插件的MANIFEST.MF出了问题
    • Library Path 配置错误等

    对项目配置有任何更改,可能都需要删除已经添加的文件,然后重新添加

Qt4和Qt5的 VS Add-in不能同时安装的,切记!!

Visual Studio Add-in相关问题

  • 如果出现“Cannot register qt VS2010 help!”和"Cannot register qt5vs VS2010 help"等错误,不用担心。这只是代表了帮助功能的缺失。
    还是用Qt Assistan看帮助吧,反正Visual Studio Add-in提供的文档可能不是最新的,也可能对应的Qt版本不对。
    可以参考如下链接:

4. 其他

  • moc很容易出错,并且出的错一般都很诡异。因此,当遇到诡异问题的时候,观察一下moc是否正常。举个例子,如果项目中添加了qrc文件,但是在<Generated Files>文件夹下找不到相应的cpp文件,则很有可能qrc配置出错,或者是文件丢失了。打开qrc_<...>.cpp文件,可以大概看出来包含了哪些文件。

  • 链接器 -> 命令行 -> 其他选项:加入 /SUBSYSTEM:CONSOLE, 可以让GUI程序拥有命令行窗口
    如果是在Qt Creator中,需要将.pro文件同目录下的.user文件删除,重新构建,才能出现命令行窗口

  • qDebug() 在打印QString时,如果QString包含中文,会无法正确显示。有两种方法:

    • 将QString用qUtf8Printable包裹
      qDebug() << qUtf8Printable(QString("中文"));
    • 直接调用QString::toUtf8().constData()
      qDebug() << QString("中文").toUtf8().constData();
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值