0. 背景
最近在學習QtCreator(版本:4.8.1;編譯器:MSVC 2017 64-bit),遇到了一些問題,特記錄如下。(
1. 引用庫
QtCreator可以直接包含Windows.h,但是沒有默認引用User32.lib,所以需要在設置里面引用,步驟如下:
右鍵點擊左邊欄的項目名稱,點添加庫,之后跳出一個選擇框。如果是像上面說的這種能夠直接包含頭文件的就選系統庫,而對於網上下載下來的包括頭文件和靜態庫文件的就選外部庫。之后按說明填就行了。注意添加完之后,需要在程序中添加一行#pragma comment(lib,"User32.lib")
才行。
2. 編碼
QtCreator在編輯文件時通常用的是utf-8,然而msvc編譯器認的是系統的編碼,一般是gtk,所以會導致編譯之后含有中文的字符串在命令行會變成“錕斤銬”😭,在窗口中則亂碼。為此我們需要強制使編譯器按utf-8編譯,可在程序中添加一行#pragma execution_character_set("utf-8")
。
3. 命令行輸出
通常qmake編譯出來的程序一般是不帶命令行的,我們可以在.pro文件中加入一行CONFIG += console
改變這個設置,然后就可以用io函數了,IDE可以在底部“3 應用程序輸出”處看到命令行輸出的內容。注意:當在.pro文件中加入這句話后,以后如果想編譯出不帶命令行的程序,不僅需要刪去這句話,還要額外加入CONFIG += console
才行。
4. 資源文件
把程序中用到的圖片等文件打包進程序的步驟如下:
在左邊欄新建.qrc文件,然后添加前綴,注意這個前綴和資源的路徑沒有關系,它僅僅是為了增加可讀性,因此是可以任取的。添加完前綴后添加資源文件。此時.pro文件中應該多出一句RESOURSES += XX.qrc
。最后在程序中引用時,直接在路徑字符串里寫:前綴資源文件名
即可。如前綴是/,資源是icon文件夾里的mouse.ico,那么字符串寫:/mouse.ico
。
5. 程序圖標
給程序設定圖標步驟如下:
在左邊欄新建一個空文件命名為icon.rc,然后在里面添加IDI_ICON1 ICON DISCARDABLE "mouse.ico"
mouse.ico是你要的圖標文件名,之后在.pro文件里添加一行RC_FILE += icon.rc
,然后用release選項編譯就能看到了。
6. 打包程序
編譯出來的程序不能直接運行,需要處理依賴。Qt已經為我們提供了這個工具,只需在開始菜單中啟動“Qt 5.12.1 (MSVC 2017 64-bit)”,然后cd到程序所在目錄,之后輸入命令windeployqt 程序名
,它就會將程序的依賴復制到當前文件夾,然后嘗試一下哪些是不需要的刪除即可。