Qt學習Day0:Qt簡介

0. 關于Qt

Qt是C++的實踐課,之前在C++中學習的語法可以有具體的應用場景。Qt的代碼量很大,不要死記硬背,學會查詢文檔的能力更加重要。

建議提升一下相關單詞的儲備量:

1. Qt是什么?

Qt是一個基于C++語言的圖形用戶界面(GUI)框架,但是Qt不僅僅可以進行界面開發,還包含很多傳統編程的功能:多線程、訪問數據庫、圖像處理、音視頻處理、網絡通信、文件IO......

下面的程序都使用 Qt 開發:WPS、YY語音、Skype、豆瓣電臺、蝦米音樂、淘寶助理、千牛、暴雪的戰網客戶端、VirtualBox、Opera、咪咕音樂、Google地圖、Adobe Photoshop Album 、微信(4.0以上)等。

Qt的開發產品可以分為三類:

1. 純軟件產品

例如上面的一些知名軟件產品。

2. 嵌入式:上位機

3. 嵌入式:自帶屏幕的硬件

2. Qt優勢(掌握)

Qt最大的優勢就是跨平臺特性:一次編程,到處編譯。

面向對象開發

豐富的API(應用程序接口)和對應的開發文檔

易用的開發環境

開源(開源刺客)

3. 新建項目

在新建項目之前,需要先把之前C++設置的編碼改回UTF-8,設置完成后重啟Qt Creator。

下面是新建并運行一個Qt項目的操作步驟:

1. 點擊

2. 直接使用默認的項目類型。

3. 設置項目名稱和路徑。

4. 使用默認的編譯器。

5. 把基類改為QDialog

6. 項目管理界面點擊完成。

7. 點擊

編譯并運行,自帶程序會有一個彈窗。

4. 項目結構(掌握)

工作目錄:即創建項目時選擇的目錄,用來存放項目開發時的各種工程文件,包括源代碼、貼圖、設計文件等。

構建目錄:存放編譯過程中生成的文件和最終的可執行程序。

打開工作目錄,可以看到項目中自帶的各種開發對應的文件:

● .pro文件

用于配置項目參數,還可以用于項目導入。

#-------------------------------------------------
#
# Project created by QtCreator 2025-04-23T09:31:34
#
#-------------------------------------------------# 在當前的項目中加入core模塊和gui模塊
QT       += core gui# 如果當前項目的版本大于4,則添加widgets模塊
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets# 項目編譯的可執行文件名稱
TARGET = Day1_24121_Helloworld
# 項目的模板為應用程序(別動)
TEMPLATE = app# 項目中包含的源文件
SOURCES += main.cpp\dialog.cpp# 項目中包含的頭文件
HEADERS  += dialog.h# 項目中包含的界面文件
FORMS    += dialog.ui

在確認工作目錄的路徑不包含中文的前提下,雙擊.pro文件可以導入項目。

● .user文件

不在Qt Creator中顯示,但是項目構建后,會在工作目錄中自動生成,內部包含了當前項目在當前設備中運行的環境信息,不同的設備此文件不通用,在導入項目之前需要刪除此文件。

上面三個文件同屬一個類:Dialog

● .cpp源文件用于編寫類的定義

#include "dialog.h"
#include "ui_dialog.h"/*** @brief Dialog::Dialog 構造函數* @param parent*/
Dialog::Dialog(QWidget *parent) :
QDialog(parent), // 透傳構造
ui(new Ui::Dialog) // 構造初始化列表
{ui->setupUi(this);
}/*** @brief Dialog::~Dialog 析構函數*/
Dialog::~Dialog()
{delete ui; // 釋放成員變量的堆內存
}

● .h頭文件用于編寫類的聲明

#ifndef DIALOG_H
#define DIALOG_H#include <QDialog> // 引入對話框窗口的基類頭文件namespace Ui {class Dialog;
}/*** @brief The Dialog class 自定義對話框窗口類*/
class Dialog : public QDialog
{
Q_OBJECTpublic:
explicit Dialog(QWidget *parent = 0); // 構造函數
~Dialog(); // 析構函數private:
Ui::Dialog *ui; // 成員變量
};#endif // DIALOG_H

● .ui文件用于編寫類的界面

● main.cpp

主程序文件,內部包含主函數,即程序運行的入口。

#include "dialog.h"
#include <QApplication>int main(int argc, char *argv[])
{// 創建了一個QApplication對象(管家)QApplication a(argc, argv);// 創建一個自定義窗口類對象Dialog w;// 展示窗口w.show();return a.exec(); // 進入主事件循環
}

5. 查詢文檔(掌握)

Qt的使用必須依賴于文檔,以下是三種查詢文檔的方法:

1. 在Windows中打開Assistant程序。

2. 在Qt Creator中點擊“幫助”

3. 在Qt Creator中光標定位到要查詢的內容,雙擊鍵盤F1

查詢的類首頁結構如下:

注意,當程序運行出現Permission Denied信息時,表示當前項目已經有一個實例在運行了,需要關閉正在運行的實例,重新運行。

如果找不到運行窗口,就點擊停止按鈕。

6. 調試信息(掌握)

前期學習盡量簡化項目,因此在創建項目時,先不選擇界面文件。

在Qt中使用QDebug輸出調試信息,QDebug可以把信息在后臺顯示,用戶在前臺不可見,而C/C++沒有前后臺的概念。

dialog.h

#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QDebug> // 調試信息類class Dialog : public QDialog
{
Q_OBJECTpublic:
Dialog(QWidget *parent = 0);
~Dialog();
};#endif // DIALOG_H

dialog.cpp

#include "dialog.h"Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{// Qt中函數和變量使用小駝峰命名法// 第一個單詞全小寫,后面的單詞首字母大寫qDebug() << "你好" << "世界"; // <<之間自動空格qDebug() << "構造函數"; // 分號之后自動換行
}Dialog::~Dialog()
{qDebug() << "析構函數";
}

main.cpp

#include "dialog.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Dialog w;w.show();return a.exec();
}

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

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

相關文章

React知識框架

一、核心概念 1. 組件化開發 核心思想&#xff1a;將 UI 拆分為獨立、可復用的組件&#xff08;函數組件/類組件&#xff09;。組件特性&#xff1a;props&#xff08;接收參數&#xff09;、state&#xff08;組件狀態&#xff09;、生命周期&#xff08;類組件特有&#xf…

Django之賬號登錄及權限管理

賬號登錄及權限管理 目錄 1.登錄功能 2.退出登錄 3.權限管理 4.代碼展示合集 這篇文章, 會講到如何實現賬號登錄。賬號就是我們上一篇文章寫的賬號管理功能, 就使用那里面已經創建好的賬號。這一次登錄, 我們分為三種角色, 分別是員工, 領導, 管理員。不同的角色, 登錄進去…

[學習]RTKLib詳解:convkml.c、convrnx.c與geoid.c

本文是 RTKLlib詳解 系列文章的一篇&#xff0c;目前該系列文章還在持續總結寫作中&#xff0c;以發表的如下&#xff0c;有興趣的可以翻閱。 [學習] RTKlib詳解&#xff1a;功能、工具與源碼結構解析 [學習]RTKLib詳解&#xff1a;pntpos.c與postpos.c [學習]RTKLib詳解&…

java 破解aspose.words 18.6 使用

資源包&#xff1a;https://download.csdn.net/download/qq_36598111/90787167 jar包是破解過的&#xff0c;直接可以使用。 引入jar&#xff0c;要引入本地的&#xff0c;不要直接引入倉庫的 <dependency><groupId>com.aspose</groupId><artifactId>…

vue使用rules實現表單校驗——校驗用戶名和密碼

編寫校驗規則 常規校驗 const rules {username: [{ required: true, message: 請輸入用戶名, trigger: blur },{ min: 5, max: 16, message: 長度在 5 到 16 個字符, trigger: blur }],password: [{ required: true, message: 請輸入密碼, trigger: blur },{ min: 5, max: 1…

寶塔服務安裝使用的保姆級教程

寶塔介紹&#xff1a; 寶塔面板&#xff08;BT Panel&#xff09; 是一款 國產的服務器運維管理面板&#xff0c;主要用于簡化 Linux/Windows 服務器的網站、數據庫、FTP、防火墻等管理操作。它通過圖形化界面&#xff08;Web端&#xff09;和命令行工具&#xff08;bt 命令&a…

數字化轉型-4A架構之數據架構

4A架構系列文章 數字化轉型-4A架構&#xff08;業務架構、應用架構、數據架構、技術架構&#xff09; 數字化轉型-4A架構之業務架構 數字化轉型-4A架構之應用架構 數字化轉型-4A架構之數據架構 數字化轉型-4A架構之技術架構 數據架構 Data Architecture&#xff08;DA&…

每日腳本 5.11 - 進制轉換和ascii字符

前置知識 python中各個進制的開頭 二進制 &#xff1a; 0b 八進制 &#xff1a; 0o 十六進制 : 0x 進制轉換函數 &#xff1a; bin() 轉為2進制 oct() 轉換為八進制的函數 hex() 轉換為16進制的函數 ascii碼和字符之間的轉換 &#xff1a; chr(97) 碼轉為字符 …

Vulnhub Lazysysadmin靶機攻擊實戰(一)

導語 ??靶機下載地址 https://download.vulnhub.com/lazysysadmin/Lazysysadmin.zip ??靶機信息地址 https://www.vulnhub.com/entry/lazysysadmin-1,205/ 文章目錄 信息收集掃描路徑提權其他思路探索其他方式找密碼總結下載安裝好靶機之后啟動虛擬機如下所示。 信息收集 我…

【DB2】DB2啟動失敗報錯SQL1042C

在本地某次啟動db2時報錯SQL1042C&#xff0c;具體報錯如下 [db2inst1standby ~]$ db2start 05/07/2025 16:32:53 0 0 SQL1042C An unexpected system error occurred. SQL1032N No start database manager command was issued. SQLSTATE57019在網上百度到說是需要…

Python中的re庫詳細用法與代碼解析

目錄 1. 前言 2. 正則表達式的基本概念 2.1 什么是正則表達式&#xff1f; 2.2 常用元字符 3. re庫的適應場景 3.1 驗證用戶輸入 3.2 從文本中提取信息 3.3 文本替換與格式化 3.4 分割復雜字符串 3.5 數據清洗與預處理 4. re庫的核心功能詳解 4.1 re.match()&#…

藍橋杯2025年第十六屆省賽真題-水質檢測

C語言代碼&#xff1a; #include <stdio.h> #include <string.h>#define MAX_LEN 1000000int main() {char a[MAX_LEN 1], b[MAX_LEN 1];// 使用 scanf 讀取字符數組scanf("%s", a);scanf("%s", b);int ans 0;int pre -1;int state -1;i…

65.Three.js案例-使用 MeshNormalMaterial 和 MeshDepthMaterial 創建 3D 圖形

65.Three.js案例-使用 MeshNormalMaterial 和 MeshDepthMaterial 創建 3D 圖形 實現效果 在該案例中&#xff0c;Three.js 被用來創建一個包含多個 3D 對象的場景。其中包括&#xff1a; 圓環結&#xff08;TorusKnot&#xff09;立方體&#xff08;Box&#xff09;球體&…

Python學習筆記--Django的安裝和簡單使用(一)

一.簡介 Django 是一個用于構建 Web 應用程序的高級 Python Web 框架。Django 提供了一套強大的工具和約定&#xff0c;使得開發者能夠快速構建功能齊全且易于維護的網站。Django 遵守 BSD 版權&#xff0c;初次發布于 2005 年 7 月, 并于 2008 年 9 月發布了第一個正式版本 1…

《汽車噪聲控制》復習重點

題型 選擇 填空 分析 計算 第一章 噪聲定義 不需要的聲音&#xff0c;妨礙正常工作、學習、生活&#xff0c;危害身體健康的聲音&#xff0c;統稱為噪聲 噪聲污染 與大氣污染、水污染并稱現代社會三大公害 聲波基本概念 定義 媒質質點的機械振動由近及遠傳播&am…

冒泡排序的原理

冒泡排序是一種簡單的排序算法&#xff0c;它通過重復地遍歷待排序的列表&#xff0c;比較相鄰的元素并交換它們的位置來實現排序。具體原理如下&#xff1a; 冒泡排序的基本思想 冒泡排序的核心思想是通過相鄰元素的比較和交換&#xff0c;將較大的元素逐步“冒泡”到列表的…

前端npm包發布流程:從準備到上線的完整指南

無論是使用第三方庫還是創建和分享自己的工具&#xff0c;npm都為我們提供了一個強大而便捷的平臺&#xff0c;然而很多開發者在將自己的代碼發布到npm上時往往面臨各種困惑和挑戰&#xff0c;本篇文章將從準備工作到發布上線&#xff0c;探討如何讓npm包更易發布及避免常見的坑…

使用 CDN 在國內加載本地 PDF 文件并處理批注:PDF.js 5.x 實戰指南

PDF.js 是一個強大的開源 JavaScript 庫&#xff0c;用于在 Web 瀏覽器中渲染 PDF 文件。它由 Mozilla 開發&#xff0c;能夠將 PDF 文檔繪制到 HTML5 Canvas 或 SVG 上&#xff0c;無需任何本機代碼或瀏覽器插件。對于許多需要在網頁中展示 PDF 內容的應用場景來說&#xff0c…

網絡化:DevOps 工程的必要基礎(Networking: The Essential Foundation for DevOps Engineering)

李升偉 編譯 理解網絡化基礎知識 你是否曾想過是什么真正讓卓越的DevOps工程師與眾人區別開來&#xff1f;答案是網絡化。是的&#xff0c;對網絡的基本理解不僅僅是有幫助的——它是絕對必要的。在當今以微服務、容器和分布式系統為主宰的互聯互通世界中&#xff0c;對網絡原…

C++基本知識 —— 缺省參數·函數重載·引用

C基本知識 —— 缺省參數函數重載引用 1. 缺省參數2. 函數重載3. 引用3.1 引用的基礎知識3.2 引用的作用3.3 const 引用3.4 指針與引用的關系 1. 缺省參數 什么是缺省參數&#xff1f;缺省參數是聲明或定義函數時為函數的參數指定一個缺省值。在調用該函數的時候&#xff0c;如…