Qt6.5類庫實例大全:Qt Creator快速入門

哈嘍大家好,我是20YC編程小二!掃碼關注公眾號,現在可免費領取《C++程序員》在線視頻教程哦!#下面開始今天內容#


1. Qt Creator介紹

Qt Creator是一個輕量級的跨平臺集成開發環境(IDE),專為使用Qt框架進行應用程序開發而設計。這個工具功能強大、易于使用、快速且高效,被廣泛用于編寫各種類型的應用程序,包括桌面應用程序、移動應用程序和嵌入式系統等。

Qt Creator提供的主要功能包括:

  • 可視化的界面設計器和代碼編輯器:可以幫助開發者更快捷地創建復雜的用戶界面和處理各種事件。
  • 調試工具:允許開發人員在代碼中設置斷點以及檢查變量、堆棧和調用樹等信息。
  • 版本控制工具:有助于開發團隊協同工作。
  • 具有自動完成和智能提示功能:可以提高編程效率。
  • 支持多語言和跨平臺的開發環境:可以滿足不同開發者的需求。
  • 緊密集成的Qt框架:使得開發者可以更容易地管理和部署他們的應用程序。

此外,Qt Creator還具有強大的編輯器功能,如語法高亮、代碼折疊、智能提示、自動完成和代碼重構等。總的來說,Qt Creator是一個功能齊全、易于使用且高效的跨平臺IDE,適用于各種類型的應用程序開發,特別是那些使用Qt框架的開發者。

2. 檢查Qt構建套件(Kit)是否正常

如果剛安裝第一次打開Qt Creator,先檢查構建套件(Kit)是否正常。

點擊【編輯(E)】->【Preferences...】菜單項,打開界面,左邊選擇【構建套件(Kit)】,如下圖,默認找到MSVC 2019表示開發環境正常。

3. 新建第一個Qt GUI程序

  • 創建一個"Qt Widgets Application"項目

打開 Qt Creator,點擊"創建項目..."按鈕,打開界面,選擇"Application (Qt)"->"Qt Widgets Application":

  • 輸入項目名稱和保存路徑

輸入項目"名稱:"和"創建路徑:",點擊"下一步":

  • 選擇使用CMake構建方式

選擇"CMake"構建方式,點擊"下一步":

  • 修改QMainWindow主界面類名、文件名

輸入創建程序主界面類名稱和文件等信息,默認即可,點擊"下一步":

  • 選擇翻譯文件

沒有翻譯文件,默認進入"下一步":

  • 選擇構建套件

選擇"Desktop Qt 6.5.3 MSVC2019 64bit"編譯構建,點擊"下一步":

  • 選擇版本控制系統,如Git、SVN等

暫時不添加到版本控制系統,點擊"完成",創建第一個GUI程序:

  • Qt 項目文件結構

Qt 項目文件清單如下:

4. Qt Creator主界面介紹

  • Qt Creator主界面布局

Qt Creator主界面布局介紹如下:

  • 切換到編輯模式

編輯模式:用于修改源文件等。

  • 切換到調試模式

調試模式:方便查看調試信息等。

  • 切換到項目模式

項目模式:可以查看和修改項目配置信息。

5. 添加按鈕和實現彈出消息框

  • 打開mainwindow.ui窗體設計文件

在【項目】文件結構里面,鼠標雙擊"mainwindow.ui"文件:

  • 添加 Push Button 按鈕

鼠標拖一個"Push Button"按鈕到中間對話框設計界面上:

  • .h 頭文件添加槽函數

什么是槽函數:某個信號(或消息、事件等)的具體實現函數叫槽函數。

例如Pusu Button按鈕點擊的時候,會發射一個QPushButton::clicked()信號,界面類就可以利用槽函數來響應信號,編寫按鈕觸發的業務邏輯代碼。

public slots: // slots 用于修飾以下所有函數為槽函數// 槽函數void slotPushButtonClicked(bool checked = false);
  • .cpp 文件實現槽函數功能
// 槽函數實現
void MainWindow::slotPushButtonClicked(bool checked)
{QMessageBox::information(this, "提示信息", "第一個彈框例子");
}
  • 修改按鈕顯示名稱
// 修改按鈕顯示名稱
ui->pushButton->setText("點擊我");
  • 連接按鈕點擊事件

connect() 連接簡單理解就是綁定的意思。

通過connect()連接函數,把Push Button按鈕的QPushButton::clicked()信號,和槽函數slotPushButtonClicked()連接到一起,當按鈕點擊事件clicked()信號發射時,slotPushButtonClicked()函數就相應的執行。

// 連接按鈕的 clicked 點擊事件到 slotPushButtonClicked 槽函數
connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::slotPushButtonClicked);
  • mainwindow.h完整代碼
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECT
public:MainWindow(QWidget *parent = nullptr);~MainWindow();
//添加以下二行代碼
public slots:    // slots 用于修飾以下所有函數為槽函數// 槽函數void slotPushButtonClicked(bool checked = false);private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
  • mainwindow.cpp完整代碼
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QMessageBox>  // 使用 QMessageBox 彈出信息框,需要包含頭文件MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 修改按鈕顯示名稱ui->pushButton->setText("點擊我");// 連接按鈕的 clicked 點擊事件到 slotPushButtonClicked 槽函數connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::slotPushButtonClicked);
}MainWindow::~MainWindow()
{delete ui;
}// 槽函數實現
void MainWindow::slotPushButtonClicked(bool checked)
{QMessageBox::information(this, "提示信息", "第一個彈框例子");
}
  • 構建(編譯)項目

選擇菜單【構建】->【構建項目"lesson01"】,或按"Ctrl+B"編譯項目:

  • 運行程序

點擊以下按鈕,或按"Ctrl+R"運行程序:

程序運行結果:

6. 擴展知識:CMake介紹

CMake是一個跨平臺的編譯(構建)工具,可以用簡單的語句來描述所有平臺的編譯過程。CMake能夠輸出各種各樣的Makefile或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。

CMake的配置文件是CMakeLists.txt,CMake不會直接建構出最終的軟件,而是產生標準的建構檔(如Unix的Makefile或Windows Visual C++的projects/workspaces),然后再依一般的建構方式使用。

Qt Creator利用CMake來幫助管理和構建C++程序的項目。

(lesson01)項目自動生成的CMakeLists.txt源碼如下:

cmake_minimum_required(VERSION 3.5)project(lesson01 VERSION 0.1 LANGUAGES CXX)set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)set(PROJECT_SOURCESmain.cppmainwindow.cppmainwindow.hmainwindow.ui
)if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)qt_add_executable(lesson01MANUAL_FINALIZATION${PROJECT_SOURCES})
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET lesson01 APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()if(ANDROID)add_library(lesson01 SHARED${PROJECT_SOURCES})
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")else()add_executable(lesson01${PROJECT_SOURCES})endif()
endif()target_link_libraries(lesson01 PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
if(${QT_VERSION} VERSION_LESS 6.1.0)set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.lesson01)
endif()
set_target_properties(lesson01 PROPERTIES${BUNDLE_ID_OPTION}MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}MACOSX_BUNDLE TRUEWIN32_EXECUTABLE TRUE
)include(GNUInstallDirs)
install(TARGETS lesson01BUNDLE DESTINATION .LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)if(QT_VERSION_MAJOR EQUAL 6)qt_finalize_executable(lesson01)
endif()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212111.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212111.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212111.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為OD機試真題-攀登者1-2023年OD統一考試(C卷)

題目描述: 攀登者喜歡尋找各種地圖,并且嘗試攀登到最高的山峰。 地圖表示為一維數組,數組的索引代表水平位置,數組的高度代表相對海拔高度。其中數組元素0代表地面。 例如[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0], 代表如下圖所示的地圖,地圖中有兩個山脈位置分別為 1,2,3,4,5和8…

基于深度學習的文本分類研究綜述

摘要 與傳統的機器學習模型相比&#xff0c;深度學習模型試圖模仿人的學習思路&#xff0c;通過計算機自動進行海量數據的特征提取工作。文本分類是自然語言處理中的一個重要應用&#xff0c;在文本信息處理過程中有著關鍵作用。過去幾年&#xff0c;由于深度學習研究的空前成…

NAND閃存市場2023年Q3增長2.9%,Q4有望激增20%

TrendForce報告顯示&#xff0c;NAND閃存市場在2023年第三季度出現了關鍵轉折&#xff0c;主要由三星的戰略性減產決定驅動。最初&#xff0c;市場對終端用戶需求的不確定性以及對平淡旺季的擔憂導致買家采取保守的方法&#xff0c;庫存低、采購慢。然而&#xff0c;隨著三星等…

華為新款筆記本搭載5nm麒麟芯片,來源成謎,可能讓大家失望了~

近日&#xff0c;華為公司悄悄推出了一款基于國產技術打造的全新商用筆記本——華為擎云L540。目前&#xff0c;華為擎云L540在京東平臺悄然上線的&#xff0c;尚未在華為官方渠道公開售賣。華為擎云L540搭載了麒麟9006C處理器&#xff0c;采用先進的5nm制程工藝&#xff0c;8 …

codeforces A. Morning

思路 模擬&#xff0c;按順序移動移動到對應位置貢獻為移動的步數&#xff0c;press的次數。 Think Twice, Code Once #include<bits/stdc.h> #define il inline #define get getchar #define put putchar #define is isdigit #define int long long #define dfor(i,a…

openGauss學習筆記-150 openGauss 數據庫運維-備份與恢復-物理備份與恢復之gs_backup

文章目錄 openGauss學習筆記-150 openGauss 數據庫運維-備份與恢復-物理備份與恢復之gs_backup150.1 背景信息150.2 前提條件150.3 語法150.4 參數說明150.5 示例 openGauss學習筆記-150 openGauss 數據庫運維-備份與恢復-物理備份與恢復之gs_backup 150.1 背景信息 openGaus…

錯題總結(四)

1.【一維數組】輸入10個整數&#xff0c;求平均值 編寫一個程序&#xff0c;從用戶輸入中讀取10個整數并存儲在一個數組中。然后&#xff0c;計算并輸出這些整數的平均值。 int main() {int arr[10];int sum 0;for (int n 0; n < 10; n){scanf("%d", &arr…

[完美解決]Accelerate設置單卡訓練報錯,成功設置單卡訓練

報錯內容 ValueError: Less than two GPU ids were configured and tried to run on on multiple GPUs. Please ensure at least two are specified for --gpu_ids, or use --gpu_idsall. ValueError:配置了少于兩個GPU id&#xff0c;并試圖在多個GPU上運行。請確保為——gpu…

小黑子——springBoot基礎

springBoot簡單學習 一、SpringBoot簡介1.1 springBoot快速入門1.1.1 開發步驟1.1.2 對比1.1.3 官網構建工程1.1.3 SpringBoot工程快速啟動 1.2 springBoot概述1.2.1 起步依賴I. 探索父工程II. 探索依賴III. 小結 1.2.2 程序啟動1.2.3 切換web服務器-jetty 二、配置文件2.1 配置…

C語言精選——選擇題Day43

第一題 1. 使用malloc系統調用分配的內存是在什么上分配的&#xff1f; A&#xff1a;棧 B&#xff1a;堆 答案及解析 B malloc開辟的空間都是在堆上申請的內存空間&#xff0c;但是我們平常定義的定長數組之類的&#xff0c;都是在棧上開辟的空間&#xff1b; 第二題 2. C語言…

scala變量與變量類型

1.6 變量與類型&#xff08;重點&#xff09;1.6.1 變量推斷1.6.2 多變量定義1.6.3 var和val的區別 1.6.3.1 是否可變 1.6.3.2 延遲加載 1.6 變量與類型&#xff08;重點&#xff09; val修飾的變量&#xff0c;相當于Java中final修飾的變量; // 定義常量s1&#xff0c;使用…

[每周一更]-(第76期):Go源碼閱讀與分析的方式

讀源碼可以深層理解Go的編寫方式&#xff0c;理解作者們的思維方式&#xff1b;也有助于對Go語法用法深刻的理解&#xff0c;我們從這一篇說一下如何讀源碼&#xff0c;從哪些源碼著手&#xff0c;從 簡單到深入的方式學習源碼&#xff1b; 學習源碼也是一個修煉過程&#xff0…

「斗破年番」卡點俠蕭炎又卡點救人,四長老毒氣攻心,黑皇城尋寶

Hello,小伙伴們&#xff0c;我是拾荒君。 《斗破蒼穹年番》第74集如約而至&#xff0c;帶給觀眾們更多的驚喜與感動。這一集中&#xff0c;蕭炎的體內魔毒斑暫時被厄難毒體所壓制&#xff0c;他決定回到迦南學院&#xff0c;尋求斗尊強者的幫助解決這個問題。然而&#xff0c;…

深入理解 Flask 中的 Session 和 Cookies

在構建 web 應用時,管理用戶的狀態和數據是至關重要的。Flask,作為一個靈活的微型 web 框架,提供了會話(Session)和 Cookies 管理的能力。本文將深入探討 Flask 中的會話和 Cookies 的概念、工作機制以及應用實例,為讀者提供全面而詳細的理解。 會話和 Cookies 的基本概…

【LeetCode熱題100】【滑動窗口】找到字符串中所有字母異位詞

給定兩個字符串 s 和 p&#xff0c;找到 s 中所有 p 的 異位詞 的子串&#xff0c;返回這些子串的起始索引。不考慮答案輸出的順序。 異位詞 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 示例 1: 輸入: s "cbaebabacd", p "…

611.有效的三角形個數

1.題目解析 給定一個包含非負整數的數組 nums &#xff0c;返回其中可以組成三角形三條邊的三元組個數。 補充&#xff1a; 1.三角形的判斷&#xff1a;假設有三條邊按大小排序&#xff1a; 2.題目示例 示例 1: 輸入: nums [2,2,3,4] 輸出: 3 解釋:有效的組合是: 2,3,4 (使用…

P1161 開燈題解

題目 在一條無限長的路上&#xff0c;有一排無限長的路燈&#xff0c;編號為1,2,3,4,…。 每一盞燈只有兩種可能的狀態&#xff0c;開或者關。如果按一下某一盞燈的開關&#xff0c;那么這盞燈的狀態將發生改變。如果原來是開&#xff0c;將變成關。如果原來是關&#xff0c;…

C現代方法(第27章)筆記——C99對數學計算的新增支持

文章目錄 第27章 C99對數學計算的新增支持27.1 <stdint.h>: 整數類型(C99)27.1.1 <stdint.h>類型27.1.2 對指定寬度整數類型的限制27.1.3 對其他整數類型的限制27.1.4 用于整型常量的宏 27.2 <inttype.h>: 整數類型的格式轉換(C99)27.2.1 用于格式指定符的宏…

人工智能與自然語言處理

人工智能&#xff08;AI&#xff09;與自然語言處理&#xff08;NLP&#xff09;是當前科技領域的兩大熱門話題。人工智能通過模擬人類的思維過程和智能行為&#xff0c;使計算機具備了一定的智能和自學能力。而自然語言處理則是指計算機對人類語言進行理解、處理和生成的技術。…

PCIe MPS參數介紹及如何更改

目錄 1.簡介 2.主要功能作用 3.MPS控制策略 4.如何更改 1.簡介 MPS 該參數含義是一個TLP包里攜帶的有效凈荷的最大值是多少字節&#xff08;該限制條件同時適用于寫操作和讀操作&#xff09;。 MRRS 該參數含義是一個TLP讀請求包&#xff0c;一次最多能向接收端請求讀出…