1. 將普通Win32項(xiàng)目轉(zhuǎn)換為Qt項(xiàng)目
- 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對(duì)Qt的支持
在啟動(dòng)VS前必須設(shè)置QTDIR這個(gè)環(huán)境變量,可以使用一個(gè)批處理文件啟動(dòng)Visual Studio, 腳本內(nèi)容如下:
set QTDIR=C:\Qt\Qt5.5.1-VS2013\5.5\msvc2013
echo %QTDIR%
cd "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\"
start devenv.exe
2.2 Visual Assist配置
VS2010不要要配置,VS2013需要配置
參考鏈接
- http://blog.wholetomato.com/2008/11/20/using-qt-44-with-visual-assist-x/
- http://support.wholetomato.com/default.asp?W451
需要包含的目錄
在(VAssistX|Visual Assist X Options|Projects|C/C++ Directories)中設(shè)置, 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. 常見(jiàn)錯(cuò)誤
3.1 編譯錯(cuò)誤
Q_INTERFACES undefined interface
在創(chuàng)建工程的時(shí)候,如果在“C/C++ -> 常規(guī) -> 附加包含目錄”等配置好之前,就添加源代碼、頭文件,就可能會(huì)造成這個(gè)錯(cuò)誤。
解決辦法: 刪除已經(jīng)添加的文件,重新添加
3.2 運(yùn)行時(shí)錯(cuò)誤
-
無(wú)法加載插件。無(wú)法加載插件的原因可能有很多,例如:
- 插件目錄配置錯(cuò)誤
- 插件的MANIFEST.MF出了問(wèn)題
- Library Path 配置錯(cuò)誤等
對(duì)項(xiàng)目配置有任何更改,可能都需要?jiǎng)h除已經(jīng)添加的文件,然后重新添加
Qt4和Qt5的 VS Add-in不能同時(shí)安裝的,切記??!
Visual Studio Add-in相關(guān)問(wèn)題
- 如果出現(xiàn)“Cannot register qt VS2010 help!”和"Cannot register qt5vs VS2010 help"等錯(cuò)誤,不用擔(dān)心。這只是代表了幫助功能的缺失。
還是用Qt Assistan看幫助吧,反正Visual Studio Add-in提供的文檔可能不是最新的,也可能對(duì)應(yīng)的Qt版本不對(duì)。
可以參考如下鏈接:- MSDN Library for vs 2010 下載和安裝, http://www.cnblogs.com/apigiraffe/p/3208149.html。
4. 其他
moc很容易出錯(cuò),并且出的錯(cuò)一般都很詭異。因此,當(dāng)遇到詭異問(wèn)題的時(shí)候,觀察一下moc是否正常。舉個(gè)例子,如果項(xiàng)目中添加了qrc文件,但是在<Generated Files>文件夾下找不到相應(yīng)的cpp文件,則很有可能qrc配置出錯(cuò),或者是文件丟失了。打開(kāi)qrc_<...>.cpp文件,可以大概看出來(lái)包含了哪些文件。
鏈接器 -> 命令行 -> 其他選項(xiàng):加入 /SUBSYSTEM:CONSOLE, 可以讓GUI程序擁有命令行窗口
如果是在Qt Creator中,需要將.pro文件同目錄下的.user文件刪除,重新構(gòu)建,才能出現(xiàn)命令行窗口-
qDebug() 在打印QString時(shí),如果QString包含中文,會(huì)無(wú)法正確顯示。有兩種方法:
- 將QString用qUtf8Printable包裹
qDebug() << qUtf8Printable(QString("中文")); - 直接調(diào)用QString::toUtf8().constData()
qDebug() << QString("中文").toUtf8().constData();
- 將QString用qUtf8Printable包裹