1. 程式人生 > >轉:QT安裝簡介

轉:QT安裝簡介

1、下載QT安裝包

下載網址:http://download.qt.io/

或者http://download.qt.io/archive/qt/

選擇一個你需要的版本,例如 5.10


點選進去後,選擇對應作業系統的安裝包下載,例如qt-opensource-windows-x86-5.10.0.exe

2、安裝QT

安裝包下載好後,雙擊執行,根據提示一步步往下走即可


在選擇要安裝的元件時,可能需要注意了,可以用兩種編譯器編譯QT程式,一個是Visual Studio,另外一個是MinGW,是Minimalist GNUfor Windows的縮寫。

如果選擇了Visual Studio作為編譯器,就必須安裝對應版本的Visual Studio,剛開始我是安裝Visual Studio2015,但是發現VS 太大了,十幾個G,安裝之後C盤所剩無幾。雖然安裝時選到了其他盤,但是大部分仍然還是被裝到了C盤,解除安裝的時候也很無奈,得從控制面板中一個個解除安裝。

雖然安裝QT時選擇了MSVC元件,但是Visual Studio編譯器並沒有一起安裝,因為Visual Studio是微軟的軟體,QT是不敢把它整合到自己的安裝包中,但是如果選擇了MinGW,就會在安裝上MinGW編譯器,因為MinGW是開源的。

3、建立一個工程

安裝好後,雙擊QtCreator執行


選擇新建一個工程,可以選擇Qt Widgets Application


選擇Qt Widgets Application 模版後,編譯執行起來就能看到一個簡單的介面


點選左下角的三角圖示編譯和執行你的程式,這時候就會彈出一個視窗,如果是要編譯出正式版本的exe,可以編譯出release版本


在專案介面中的構建配置中選擇成release,預設是debug,release版本編譯出來的exe會比debug版本的檔案要小。


同樣的點選三角形執行圖示後,會在對應的目錄下生成exe檔案,這個exe檔案雙擊之後還是無法執行的,因為缺少一些dll檔案,那麼我們怎麼知道還缺少什麼dll檔案,可以用QT自帶的工具來完成。


執行該該程式


切換到一個空目錄下,同時把QT編譯出來的exe檔案拷貝到這個目錄下,然後輸入windeployqt  ProgramName.exe


執行完之後,會在該目錄下生成需要的檔案,這時再雙擊exe檔案,就可以之前執行程式了,同樣把該目錄下的所有檔案拷貝到其他電腦上,也可以直接執行。

如果覺得在命令視窗中輸入命令很麻煩,也可以使用如下指令碼來幫助生成依賴檔案

qt_pack.bat


    
  1. @echo off
  2. rem set current dir
  3. set cur_dir=%cd%
  4. rem Setting up environment for Qt usage...
  5. set PATH=D:\Qt\Qt5 .10 .0\ 5.10 .0\mingw53_32\bin;D:/Qt/Qt5 .10 .0/Tools/mingw530_32\bin;%PATH%
  6. rem set windeployqt tool path
  7. set windeployqt=D:\Qt\Qt5 .10 .0\ 5.10 .0\mingw53_32\bin\windeployqt.exe
  8. for /f "delims=\" %%a in ( 'dir /b /a-d /o-d "%cur_dir%\*.exe"') do (
  9. for /f "delims=.exe tokens=1,*" %%i in ( "%%a") do (
  10. rem if dir is exist ,remove firstly
  11. if exist %cur_dir%\%%i (
  12. rd /s /Q %cur_dir%\%%i
  13. )
  14. rem create dir
  15. md %cur_dir%\%%i
  16. rem move exe file to designated dir
  17. move %%a %cur_dir%\%%i\%%a
  18. rem execute windeployqt
  19. %windeployqt% %cur_dir%\%%i\%%a
  20. )
  21. )
  22. rem wait for input
  23. pause

將上面的內容拷貝到一個.bat的指令碼檔案中,放在一個空目錄下,把QT編譯出來的exe也放在這個目錄下,執行指令碼即可

上述指令碼中set PATH 需要改成QT對應的安裝目錄,注意後面的路徑是/

set PATH=D:\Qt\Qt5.10.0\5.10.0\mingw53_32\bin;D:/Qt/Qt5.10.0/Tools/mingw530_32\bin;%PATH%
    

指令碼中的 windeployqt 也需要改成QT對應的安裝目錄

set windeployqt=D:\Qt\Qt5.10.0\5.10.0\mingw53_32\bin\windeployqt.exe
    

編寫指令碼遇到的問題

for /f "delims=.exe tokens=1,*" %%i in ("%%a")
    

遍歷當前目錄下的exe檔案,依次呼叫windeployqt 給對應的exe 生成依賴檔案,需要先在當前目錄下建立一個資料夾,資料夾的名稱就是exe對應的檔名,外面的一個for迴圈可以得到exe的檔名和字尾,例如Qwind.exe,這個值存在%%a中,我需要把%%a中的.exe去掉,只保留Qwind,所以寫了第二個for,用於得到.exe前面的字串。

一開始寫成 in (%%a) ,結果死活執行不正確,後面加了單引號'%%a' 也不正確,最後改成了雙引號才沒有問題。


1、下載QT安裝包

下載網址:http://download.qt.io/

或者http://download.qt.io/archive/qt/

選擇一個你需要的版本,例如 5.10


點選進去後,選擇對應作業系統的安裝包下載,例如qt-opensource-windows-x86-5.10.0.exe

2、安裝QT

安裝包下載好後,雙擊執行,根據提示一步步往下走即可


在選擇要安裝的元件時,可能需要注意了,可以用兩種編譯器編譯QT程式,一個是Visual Studio,另外一個是MinGW,是Minimalist GNUfor Windows的縮寫。

如果選擇了Visual Studio作為編譯器,就必須安裝對應版本的Visual Studio,剛開始我是安裝Visual Studio2015,但是發現VS 太大了,十幾個G,安裝之後C盤所剩無幾。雖然安裝時選到了其他盤,但是大部分仍然還是被裝到了C盤,解除安裝的時候也很無奈,得從控制面板中一個個解除安裝。

雖然安裝QT時選擇了MSVC元件,但是Visual Studio編譯器並沒有一起安裝,因為Visual Studio是微軟的軟體,QT是不敢把它整合到自己的安裝包中,但是如果選擇了MinGW,就會在安裝上MinGW編譯器,因為MinGW是開源的。

3、建立一個工程

安裝好後,雙擊QtCreator執行


選擇新建一個工程,可以選擇Qt Widgets Application


選擇Qt Widgets Application 模版後,編譯執行起來就能看到一個簡單的介面


點選左下角的三角圖示編譯和執行你的程式,這時候就會彈出一個視窗,如果是要編譯出正式版本的exe,可以編譯出release版本


在專案介面中的構建配置中選擇成release,預設是debug,release版本編譯出來的exe會比debug版本的檔案要小。


同樣的點選三角形執行圖示後,會在對應的目錄下生成exe檔案,這個exe檔案雙擊之後還是無法執行的,因為缺少一些dll檔案,那麼我們怎麼知道還缺少什麼dll檔案,可以用QT自帶的工具來完成。


執行該該程式


切換到一個空目錄下,同時把QT編譯出來的exe檔案拷貝到這個目錄下,然後輸入windeployqt  ProgramName.exe


執行完之後,會在該目錄下生成需要的檔案,這時再雙擊exe檔案,就可以之前執行程式了,同樣把該目錄下的所有檔案拷貝到其他電腦上,也可以直接執行。

如果覺得在命令視窗中輸入命令很麻煩,也可以使用如下指令碼來幫助生成依賴檔案

qt_pack.bat


  
  1. @echo off
  2. rem set current dir
  3. set cur_dir=%cd%
  4. rem Setting up environment for Qt usage...
  5. set PATH=D:\Qt\Qt5 .10 .0\ 5.10 .0\mingw53_32\bin;D:/Qt/Qt5 .10 .0/Tools/mingw530_32\bin;%PATH%
  6. rem set windeployqt tool path
  7. set windeployqt=D:\Qt\Qt5 .10 .0\ 5.10 .0\mingw53_32\bin\windeployqt.exe
  8. for /f "delims=\" %%a in ( 'dir /b /a-d /o-d "%cur_dir%\*.exe"') do (
  9. for /f "delims=.exe tokens=1,*" %%i in ( "%%a") do (
  10. rem if dir is exist ,remove firstly
  11. if exist %cur_dir%\%%i (
  12. rd /s /Q %cur_dir%\%%i
  13. )
  14. rem create dir
  15. md %cur_dir%\%%i
  16. rem move exe file to designated dir
  17. move %%a %cur_dir%\%%i\%%a
  18. rem execute windeployqt
  19. %windeployqt% %cur_dir%\%%i\%%a
  20. )
  21. )
  22. rem wait for input
  23. pause

將上面的內容拷貝到一個.bat的指令碼檔案中,放在一個空目錄下,把QT編譯出來的exe也放在這個目錄下,執行指令碼即可

上述指令碼中set PATH 需要改成QT對應的安裝目錄,注意後面的路徑是/

set PATH=D:\Qt\Qt5.10.0\5.10.0\mingw53_32\bin;D:/Qt/Qt5.10.0/Tools/mingw530_32\bin;%PATH%
  

指令碼中的 windeployqt 也需要改成QT對應的安裝目錄

set windeployqt=D:\Qt\Qt5.10.0\5.10.0\mingw53_32\bin\windeployqt.exe
  

編寫指令碼遇到的問題

for /f "delims=.exe tokens=1,*" %%i in ("%%a")
  

遍歷當前目錄下的exe檔案,依次呼叫windeployqt 給對應的exe 生成依賴檔案,需要先在當前目錄下建立一個資料夾,資料夾的名稱就是exe對應的檔名,外面的一個for迴圈可以得到exe的檔名和字尾,例如Qwind.exe,這個值存在%%a中,我需要把%%a中的.exe去掉,只保留Qwind,所以寫了第二個for,用於得到.exe前面的字串。

一開始寫成 in (%%a) ,結果死活執行不正確,後面加了單引號'%%a' 也不正確,最後改成了雙引號才沒有問題。