Qt Visual Studio

1. 將普通Win32項(xiàng)目轉(zhuǎn)換為Qt項(xiàng)目

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對(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需要配置

參考鏈接

需要包含的目錄

在(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ì)。
    可以參考如下鏈接:

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();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 11,006評(píng)論 0 23
  • 一方蒸汽 幽冥井下 一腔熱血 結(jié)疥夜洼 由此: 黑色始于沉凝 散發(fā)別人不懂的熱 刻畫(huà)別人不懂的執(zhí)著 只是附帶了點(diǎn)兒...
    文與奴情系舢哲閱讀 336評(píng)論 0 1
  • 又食言了,喝酒了。其實(shí)內(nèi)心無(wú)助的恐懼。面對(duì)未來(lái)。
    繁花似錦陌水如冰閱讀 237評(píng)論 0 0
  • 花開(kāi)了,你在哪? 這是蘇婭寫(xiě)給路棹信里的第一句話 距離上次分別已經(jīng)十年了 蘇婭胳膊抵在桌前,左手虎口支撐著前額,右...
    王曦禛閱讀 381評(píng)論 0 1
  • 前言 學(xué)習(xí)本系列內(nèi)容需要具備一定 HTML 開(kāi)發(fā)基礎(chǔ),沒(méi)有基礎(chǔ)的朋友可以先轉(zhuǎn)至 HTML快速入門(mén)(一) 學(xué)習(xí) 本人...
    珍此良辰閱讀 30,447評(píng)論 15 29

友情鏈接更多精彩內(nèi)容