創(chuàng)建項(xiàng)目
創(chuàng)建CMakeLists
#cmake最低版本
cmake_minimum_required(VERSION 3.10)
#項(xiàng)目名
project(regextool)
#查找所有*.h,*.ui,*.cpp文件,并存入SOURCES中
file(GLOB SOURCES "*.cpp" "*.ui" "*.h")
#開啟moc
set(CMAKE_AUTOMOC ON)
#開啟ui功能
set(CMAKE_AUTOUIC ON)
#查找Qt相關(guān)包
find_package(Qt5 COMPONENTS Core Widgets Gui REQUIRED)
#生成可執(zhí)行文件
add_executable(${PROJECT_NAME} WIN32 ${SOURCES})
#鏈接頭文件
target_include_directories(${PROJECT_NAME}
PRIVATE
"*.h")
#鏈接Qt相關(guān)庫(kù)
target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Widgets Qt5::Gui)
生成項(xiàng)目文件
添加main.cpp文件(可以為空)后
CMakeLists目錄下運(yùn)行
cmake -S . -B build
打開項(xiàng)目
build目錄下運(yùn)行
cmake --open .
添加文件
類文件
項(xiàng)目右鍵->添加->新建項(xiàng)->C++類。設(shè)置好類名和路徑,點(diǎn)擊添加。
ui文件
項(xiàng)目右鍵->添加->新建項(xiàng)->Qt->Qt Widget Form File。設(shè)置好類名和路徑,點(diǎn)擊添加。
關(guān)聯(lián)ui文件和類文件
由于此處添加的ui文件和類文件沒(méi)有關(guān)聯(lián),會(huì)導(dǎo)致編譯不通過(guò)(不知道是不是自己操作有誤)。所以需要在類文件中添加內(nèi)容。
*.h
//類外添加命名空間
QT_BEGIN_NAMESPACE
namespace Ui { class Form; }
QT_END_NAMESPACE
//類內(nèi)添加成員
private:
Ui::Form *ui;
*.cpp
//包含頭文件,ui_類名.h
#include "ui_Form.h"
//構(gòu)造中初始化ui變量
RegexTool::RegexTool(QWidget * parent)
:ui(new Ui::Form)
{
ui->setupUi(this);
}
此時(shí)一個(gè)待ui的類就添加好了,可以在項(xiàng)目中使用了。
一些問(wèn)題
ui文件名
上面提到的ui文件類名為Form,這是創(chuàng)建Qt Widgets Form File文件默認(rèn)的類名,暫時(shí)沒(méi)有發(fā)現(xiàn)預(yù)設(shè)的操作。
不過(guò)我們可以通過(guò)創(chuàng)建后修改ui文件進(jìn)行修改:
<ui version="4.0">
<author></author>
<comment></comment>
<exportmacro></exportmacro>
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="objectName">
<string notr="true">Form</string>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
</widget>
<pixmapfunction></pixmapfunction>
<connections/>
</ui>
可以將上面的ui文件內(nèi)容中第5行class屬性改成需要的名稱即可。
需要注意的是:<關(guān)聯(lián)ui文件和類文件>操作中的命名空間和類名也都需要同步調(diào)整。也就是用新類名替換原有的Form。
出現(xiàn)控制臺(tái)窗口
在一開始時(shí),CMakeLists文件中add_executable沒(méi)有添加WIN32配置,會(huì)導(dǎo)致每次運(yùn)行時(shí),除了ui窗口,還會(huì)彈出控制臺(tái)窗口。
快速方法
為了解決這個(gè)問(wèn)題,可以在右鍵->屬性->鏈接器->系統(tǒng)->子系統(tǒng),選擇窗口;
然后再在高級(jí)->入口點(diǎn)輸入:mainCRTStartup
這樣就可以解決這個(gè)問(wèn)題。
不過(guò),每當(dāng)重新生成項(xiàng)目文件后,都會(huì)被重置。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-645664.html
根本解決方法
在CMakeLists中add_executable中添加WIN32配置,這將會(huì)從默認(rèn)的控制臺(tái)程序改成ui程序。確保永久不會(huì)出現(xiàn)控制臺(tái)窗口文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-645664.html
到了這里,關(guān)于cmake擴(kuò)展(1)——VS+CMake創(chuàng)建Qt項(xiàng)目的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!