亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解如何配置CLion作為Qt5開發(fā)環(huán)境的方法

 更新時(shí)間:2021年04月13日 09:37:57   作者:apocelipes  
這篇文章主要介紹了詳解如何配置CLion作為Qt5開發(fā)環(huán)境的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

使用Qt進(jìn)行程序開發(fā)時(shí)QtCreator總是不二之選。作為老牌IDE在提供了強(qiáng)大的功能同時(shí)也對(duì)Qt的支持做了許多優(yōu)化。如果沒有特別的原因你應(yīng)該使用它。

然而一個(gè)順手的工具將會(huì)極大得提升生產(chǎn)效率,而如果你之前使用別的工具進(jìn)行開發(fā),那么就要斟酌一下學(xué)習(xí)使用QtCreator的成本了。

所以我將介紹配置CLion(另一個(gè)強(qiáng)大的c++ IDE)作為Qt5的開發(fā)環(huán)境,在利用現(xiàn)有工具鏈的同時(shí)避免了安裝另一個(gè)大型軟件。

準(zhǔn)備工作

CLion的安裝和激活超出了本文的討論范圍,我們假設(shè)你已經(jīng)安裝好了CLion。如果需要幫助可以去CLion官網(wǎng)查找安裝方法。

CLion默認(rèn)使用GCC進(jìn)行工程構(gòu)建,然而使用GCC是無法使用代碼補(bǔ)全功能的,所以我們將toolchains替換成clang:

注意,CLion自帶了一個(gè)cmake,如果我們想使用系統(tǒng)提供的一些cmake模塊,那么就必須如圖所示替換為系統(tǒng)的cmake。

隨后確保你的編譯器至少要支持c++11,如果能支持c++14或者c++17那自然是最好。

創(chuàng)建Qt5項(xiàng)目

下面是創(chuàng)建Qt5項(xiàng)目,CLion沒有區(qū)分普通c++項(xiàng)目和Qt項(xiàng)目(畢竟Qt項(xiàng)目一般也是c++項(xiàng)目或者c++/QML項(xiàng)目),所以這樣創(chuàng)建即可:

創(chuàng)建完成后項(xiàng)目結(jié)構(gòu)如圖所示:

cmake-build-release目錄是生成moc等工具的中間代碼以及可執(zhí)行文件的地方,當(dāng)然可執(zhí)行文件的生成路徑可以自己指定,這是CLion默認(rèn)的選項(xiàng)。

這時(shí)編譯運(yùn)行和代碼補(bǔ)全還是不能用的,所以接下來我們?cè)O(shè)置編譯和代碼補(bǔ)全。

設(shè)置Qt代碼補(bǔ)全和項(xiàng)目編譯

事先要說明的一點(diǎn)是,CLion是根據(jù)CMakeLists.txt文件來組織和設(shè)置項(xiàng)目的,所以如果我們需要添加諸如Qt這樣的第三方庫或是改變編譯行為,都只要修改CMakeLists.txt即可。

所以我們需要把CMakeLists.txt修改成如下的樣子:

cmake_minimum_required(VERSION 3.0)
project(test)

# 指定c++標(biāo)準(zhǔn)的版本
set(CMAKE_CXX_STANDARD 17)

# 自動(dòng)調(diào)用moc,uic,rcc處理qt的擴(kuò)展部分
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

# 設(shè)置Qt5的cmake模塊所在目錄,如果不設(shè)置將使用系統(tǒng)提供的版本
# QT_DIR和QT_VERSION是指定了qt安裝目錄和版本的環(huán)境變量
# 如果你使用了系統(tǒng)的cmake,那么會(huì)優(yōu)先使用系統(tǒng)提供模塊,因?yàn)閏make會(huì)優(yōu)先搜索CMAKE_SYSTEM_PREFIX_PATH
# 如果你不想讓cmake優(yōu)先搜索系統(tǒng)目錄(會(huì)導(dǎo)致編譯使用系統(tǒng)安裝的qt而不是我們配置的),需要提示find_package命令
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} $ENV{QT_DIR}/$ENV{QT_VERSION}/gcc_64/lib/cmake)

# 找到對(duì)應(yīng)的qt模塊,名字為qmake中QT += <name>中的name首字母大寫后加上Qt5前綴
# 例如core為QtCore,你也可以去${CMAKE_PREFIX_PATH}的目錄中找到正確的模塊名
# 如果不想使用系統(tǒng)qt,這樣寫(注意NO_DEFAULT_PATH參數(shù),它會(huì)讓find_package跳過系統(tǒng)目錄的查找):
find_package(Qt5Widgets REQUIRED NO_DEFAULT_PATH)

# 如果你想要使用系統(tǒng)自帶的qt,這樣寫:
# find_package(Qt5Widgets REQUIRED)

# 將當(dāng)前目錄的所有源文件添加進(jìn)變量
aux_source_directory(. DIRS_SRCS)

# 通常這樣設(shè)置就可以,如果你的項(xiàng)目包含qrc文件,那么需要將它們單獨(dú)添加進(jìn)來
# 例如add_executable(test ${DIRS_SRCS} resources.qrc)
add_executable(test ${DIRS_SRCS})

# 把對(duì)應(yīng)Qt模塊的庫鏈接進(jìn)程序
target_link_libraries(test Qt5::Widgets)

值得注意的是,使用系統(tǒng)提供的Qt的一個(gè)好處是編譯出來的程序可以使用系統(tǒng)的樣式和主題,但缺點(diǎn)是版本可能會(huì)與我們想使用的不一致從而產(chǎn)生錯(cuò)誤。

修改之后點(diǎn)擊圖中的Reload changes

CLion會(huì)自動(dòng)生成新的Makefile用于編譯項(xiàng)目,現(xiàn)在代碼補(bǔ)全也可以使用了。

編譯項(xiàng)目

我們先寫一個(gè)小的示例,讓一個(gè)spinbox和slider可以相互聯(lián)動(dòng):

#include <QApplication>
#include <QFormLayout>
#include <QtGlobal>
#include <QObject>
#include <QSlider>
#include <QSpinBox>
#include <QWidget>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    auto window = new QWidget;

    auto spinBox = new QSpinBox;
    spinBox->setRange(0, 100);
    auto slider = new QSlider;
    slider->setRange(0, 100);
    QObject::connect(spinBox,
                     // 對(duì)于重載函數(shù)需要給出確定的版本,QOverload需要編譯器支持c++11
                     QOverload<int>::of(&QSpinBox::valueChanged),
                     slider,
                     &QSlider::setValue);
    QObject::connect(slider,
                     &QSlider::valueChanged,
                     spinBox,
                     &QSpinBox::setValue);

    auto layout = new QFormLayout;
    layout->addRow("spin box:", spinBox);
    layout->addRow("slider:", slider);
    window->setLayout(layout);
    window->show();

    return app.exec();
}

然后我們點(diǎn)擊int main(...)左側(cè)的運(yùn)行按鈕:

程序就開始編譯了:

如果編譯成功程序就會(huì)自動(dòng)運(yùn)行:

至此CLion已經(jīng)可以正常配合Qt進(jìn)行開發(fā)。

對(duì)于i18n以及qt rcc的支持,可以參考這篇文章

到此這篇關(guān)于詳解如何配置CLion作為Qt5開發(fā)環(huán)境的方法的文章就介紹到這了,更多相關(guān)CLion配置Qt5開發(fā)環(huán)境 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++深入探究哈希表如何封裝出unordered_set和unordered_map

    C++深入探究哈希表如何封裝出unordered_set和unordered_map

    哈希表是一種根據(jù)關(guān)鍵碼去尋找值的數(shù)據(jù)映射結(jié)構(gòu),該結(jié)構(gòu)通過把關(guān)鍵碼映射的位置去尋找存放值的地方,說起來可能感覺有點(diǎn)復(fù)雜,我想我舉個(gè)例子你就會(huì)明白了,最典型的的例子就是字典
    2022-06-06
  • 基于C語言實(shí)現(xiàn)簡單掃雷游戲

    基于C語言實(shí)現(xiàn)簡單掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了基于C語言實(shí)現(xiàn)簡單掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 剖析C++中的常量表達(dá)式與省略號(hào)的相關(guān)作用

    剖析C++中的常量表達(dá)式與省略號(hào)的相關(guān)作用

    這篇文章主要介紹了C++中的常量表達(dá)式與省略號(hào)的相關(guān)作用,以及表達(dá)式中的可變參數(shù)模板示例,需要的朋友可以參考下
    2016-01-01
  • C++實(shí)現(xiàn)LeetCode(120.三角形)

    C++實(shí)現(xiàn)LeetCode(120.三角形)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(120.三角形),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 利用Qt實(shí)現(xiàn)獲取計(jì)算機(jī)的硬件信息

    利用Qt實(shí)現(xiàn)獲取計(jì)算機(jī)的硬件信息

    在開發(fā)時(shí),常常會(huì)需要用到計(jì)算機(jī)的相關(guān)信息。利用這些信息,我們可以開發(fā)一些輔助模塊。本文將利用Qt實(shí)現(xiàn)獲取計(jì)算機(jī)的硬件信息,感興趣的可以嘗試一下
    2022-12-12
  • 解析wprintf 中使用%I64d格式化輸出LONGLONG的詳細(xì)介紹

    解析wprintf 中使用%I64d格式化輸出LONGLONG的詳細(xì)介紹

    本篇文章是對(duì)wprintf 中使用%I64d格式化輸出LONGLONG進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++全排列中遞歸交換法實(shí)例詳解

    C++全排列中遞歸交換法實(shí)例詳解

    在本篇文章里小編給各位整理的是關(guān)于C++全排列中遞歸交換法實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • C++利用stringstream進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換實(shí)例

    C++利用stringstream進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換實(shí)例

    這篇文章主要介紹了C++利用stringstream進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換的方法,實(shí)例分析了使用stringstream進(jìn)行string轉(zhuǎn)int的操作技巧,需要的朋友可以參考下
    2015-01-01
  • C++ std::map幾種遍歷方式(正序倒序)

    C++ std::map幾種遍歷方式(正序倒序)

    這篇文章主要介紹了C++ std::map幾種遍歷方式,包含正序遍歷和倒序遍歷,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • Qt各種字符轉(zhuǎn)換的實(shí)現(xiàn)示例

    Qt各種字符轉(zhuǎn)換的實(shí)現(xiàn)示例

    本文主要介紹了Qt各種字符轉(zhuǎn)換的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05

最新評(píng)論