Build with CLion 2021.1 11.0.10 & Qt 5.15.2 & MSVC 2019 v142
TL;DR
- 安裝 CLion。
- 安裝 MSVC 2019 v142 。
- 安裝 Qt (with MSVC2019 x64)。
- 設定 CLion 環境。
- 建立 Qt Widgets Executable 專案。
- 微調 CMakeLists.txt
- 透過 New > Qt UI Class 建立 Qt UI 檔。
- 使用 Qt Designer 編輯 UI。
- 完成編輯 Qt UI 檔後,重新編譯專案,CMake 會自動呼叫 UIC 建立 UI 的標頭檔。
安裝
安裝 CLion
CLion 可以免費使用 30 天,如果學校有提供 E-mail 的話,可以到 JetBrains 官網啟用教育版授權,便可以免費使用一年(如果 E-mail 沒有被註銷,授權到期後可以重複啟用)。
安裝 MSVC 2019 v142
安裝 Visual Studio 的時候,選擇安裝『使用 c + + 的桌面開發』,其中就包含了 MSVC 元件,亦可自己到『個別元件』分頁單獨選擇要安裝的 MSVC 元件。
安裝 Qt
安裝 Qt 時,需要將 MSVC 2019 64-bit 選項打勾,安裝 MSVC 需要的元件。
設定編譯環境
設定編譯器
安裝完所有程式後,開啟 CLion,到 Settings > Build, Execution, Deployment > Toolchains 設定編譯工具。
將 Architecture 設定成 amd64,這樣才會自動抓到 64 位元的編譯器。
選擇編譯版本
預設專案已經包含編譯 Debug 版本的設定,如果要編譯 Release 版本,可至 Settings > Build, Execution, Deployment > CMake 新增 Release 版本。
接著只要在 CLion 視窗右上方切換 Profile 就可以編譯 Release 版本了。
建立 Qt Widgets Executable 專案
建立專案時,選擇 Qt Widgets Executable,並且將 Qt CMake prefix path 填入位於 Qt 資料夾下的 MSVC 資料夾。
專案建立完成後,可以先執行看看範例程式是否能成功執行。
微調 CMakeLists.txt
取消顯示命令提示字元
用預設的 CMakeLists.txt 編譯程式後所產生的執行檔,透過手動點兩下執行時,除了顯示 Qt UI 的界面以外,還會另外跳出一個命令提示字元視窗,這是因為編譯出來的程式沒有指定 WIN32 的緣故,因此需手動修改。
在 CMakeLists.txt 裡找到 add_executable 命令並加入 WIN32:
add_executable(${PROJECT_NAME} WIN32 main.cpp mainwindow.cpp mainwindow.h mainwindow.ui)
Qt UI 顯示樣式老舊
當程式執行時,界面是傳統 Windows 樣式的話,表示缺少 qwindowsvistastyle.dll,該檔案可以在 C:\Qt\5.15.2\msvc2019_64\plugins\styles 底下找到,可自行複製到與執行檔同目錄下的 plugins/styles 底下,或修改 CMakeLists.txt,使程式編譯完成後,自動複製到該目錄下。
在 CMakeLists.txt 加入以下程式:
判斷 qwindowsvistastyle.dll 是否存在,並將其複製至指定位置。
if (EXISTS "${QT_INSTALL_PATH}/plugins/styles/qwindowsvistastyle${DEBUG_SUFFIX}.dll")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/styles/")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${QT_INSTALL_PATH}/plugins/styles/qwindowsvistastyle${DEBUG_SUFFIX}.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/styles/")
endif ()
最終的 CMakeLists.txt
add_executable: Line 14
複製 qwindowsvistastyle.dll: Line 52 ~ 60
建立 & 編輯 UI
建立 UI 檔案
在專案上面點右鍵,並依序選擇 New > Qt UI Class,輸入名稱後,需將 Parent class 設定為 QMainWindow。
建立 UI 檔後,先在名為 MainWindow 的 Widget 裡面新增一個空的 Widget,並設定 Class 為 QWidget,這樣才能在 Qt Designer 裡面新增其他元件。
<widget class="QMainWindow" name="MainWindow">
<!-- 略 -->
<widget class="QWidget"></widget>
</widget>
編輯 UI
使用 Qt Designer 開啟 UI 檔,即可編輯界面,接著存檔後,重新編譯程式就會產生新的 UI 標頭檔。
Qt Designer 位於 C:\Qt\5.15.2\msvc2019_64\bin\designer.exe
透過設定 External Tools 可以用更方便的方式開啟 Qt Designer:
首先至 Settings > External Tools,點選加號新增外部工具,在 Program 填入 Qt Designer 的執行檔位置, Arguments 填入 $FileName$,Working directory 填入 $FileDir$,並按下 OK 即可。
接著只要對 UI 檔按右鍵,並選擇 External Tools > Qt Designer,就可以用 Qt Designer 開啟該檔案。
顯示 UI
在編輯完 UI 後,將程式重新編譯,使其產生 UI 的標頭檔 (*.h)後,接著修改 main 方法,讓界面顯示出來:
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
MainWindow m;
m.show();
return QApplication::exec();
}
啟用 UI 縮放
如果系統顯示有設定縮放的話,可能會造成 Qt Designer 拉出來的界面跟實際執行的界面比例不同,這時候在環境變數新增 QT_AUTO_SCREEN_SCALE_FACTOR = 1 就能解決。
在 main 方法的第一行新增以下程式即可:
qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1");
Include OpenCV
Install OpenCV & Add the following code in CMakeLists.txt
set(OPENCV_INCLUDE_DIRS "C:/opencv/build/include")
set(OPENCV_LIB "C:/opencv/build/x64/vc15/lib/opencv_world3410${DEBUG_SUFFIX}.lib")
include_directories(${OPENCV_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${OPENCV_LIB})
完