Qt的學習(二)

1. 創建Hello Word

????????兩種方式,實現helloworld:

????????1.通過圖形化的方式,在界面上創建出一個控件,顯示helloworld

????????2.通過純代碼的方式,通過編寫代碼,在界面上創建控件, 顯示hello world;

1.1 圖形化的方式

運行結果如下:?

1.2 純代碼的方式

????????label“標簽:界面上一個用來顯示內容的字符串控件。?

widget源文件如下:

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QLabel* label = new QLabel(this);//創建對象的時候可以在堆上創建,也可以在棧上創建,但是Qt中一般推薦在堆上創建對象//this,是指給當前的label對象,指定一個父對象this,this是指調用該構造函數的對象//即 main函數中的widget w這個對象//此處new的方式創建對象,主要是將這個對象的生命周期交給Qt的對象數來統一管理。//如果在棧上創建該控件對象,可能會存在提前釋放的問題。label->setText("Hello World");//設置控件中,要顯示的文本//QString會隱式顯式
}Widget::~Widget()
{delete ui;
}

1.3 內存泄露問題

????????上述代碼,在Qt中不會產生內存泄露,label對象會合適的時候被析構釋放(雖然沒有手動寫delete,確實能釋放)之所以能夠把對象釋放掉,主要是因為把這個對象是掛到了對象樹上。Qt中搞了一個對象樹,也是N義樹,把界面上的各種元素組織起來了。

? ? ? ? 通過這個樹形結構,就把界面上要現實的這些控件對象都組織起來。組織的目的就是能夠在合適的時候(窗口關閉/銷毀),把這些對象統一進行釋放。

如何查看文件的編碼格式:

.cpp文件,點擊右鍵,一explore方式打開進入資源管理器,將其文件以記事本的方式打開,點擊另存為,查看文本框的編碼格式。如果現實utf-8,說明這個文件就是utf-8編碼;如果顯示的是ansi,說明這個文件就是GBK編碼。

Qt Creater內置的終端不一定是使用utf8的方式現實字符串。

?????????后續再Qt中,如果想通過打印日志的方式輸出一些調試信息,都優先使用qDebug。雖然使用cout也行,但是cout對于編碼的處理不太好,在windows上容易出現亂碼(如果是Linux使用QtCreator,一般就沒事,Linux默認的編碼一般都是utf8)。
????????使用qDebug,還有一個好處就是打印的調試日志,是可以統一進行關閉的。qDebug可以通過編譯開關,來實現一鍵式關閉。

1.4 使用編輯框完成hw

編輯框分為單行編輯框(QLineEdit)和多行編輯框(QTextEdit);

form文件中圖形化操作

純代碼操作:

#include "widget.h"
#include "ui_widget.h"
#include <QLineEdit>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QLineEdit* edit = new QLineEdit(this);edit->setText("hello shangjialu");}Widget::~Widget()
{delete ui;
}

?1.5 使用按鈕創建hw

????????push button普通按鈕

????????Qt中的信號槽機制:本質就是給按鈕的點擊操作,關聯上一個處理函數。當用戶點擊的時候,就會執行這個處理函數。

圖形化界面操作?

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(ui->pushButton,&QPushButton::clicked,this,&Widget::handleClick);
}Widget::~Widget()
{delete ui;
}void Widget::handleClick()
{//當按鈕被點擊之后,就把按鈕中的文本進行切換if (ui->pushButton->text() == QString("hello shangjialu")){ui->pushButton->setText("hello faka");}else {ui->pushButton->setText("hello shangjialu");}}

純代碼的方式

#include "widget.h"
#include "ui_widget.h"
#include "widget.h"#include <ui_widget.h>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);myButton = new QPushButton(this);myButton->setText("hello shangjialu");connect(myButton,&QPushButton::clicked,this,&Widget::handleClick);
}Widget::~Widget()
{delete ui;
}void Widget::handleClick()
{if(myButton->text() == "hello shangjialu"){myButton->setText("shang linlu");}else{myButton->setText("hello shangjialu");}
}

?小結:

????????對于純代碼版本,按鈕對象是咱們自己new的。為了保證其他函數中能夠訪問到這個變量,就需要把按鈕對象設定為Widget類的成員變量。

????????對于圖形界面版本版本,此時按鈕對象,不需要咱們自己new。new對象的操作已經是被Qt自動生成了。而且這個按鈕對象,已經作為ui對象里的一個成員變量,也無需作為Widget的成員。

????????實際開發中,是通過代碼的方式構造界面為主,還是通過圖形化界面的方式構造界面為主。這兩種,都很主要,難分主次。

????????如果當前程序界面,界面內容是比較固定的,此時就會以圖形化的方式來構造界面;但是如果程序界面,經常要動態變化,此時就會以代碼的方式來構造界面。?

1.6?QtCreator中的快捷鍵

? 注釋:ctrl+/
? 運行:ctrl+R
? 編譯:ctrl+B
? 字體縮放:ctrl+鼠標滑輪
? 查找:ctrl+F
? 整行移動:ctrl+shift+個/
? 幫助文檔:F1
? 自動對齊:ctrl+i
? 同名之間的.h和.cpp的切換:F4生成函數聲明的對應定義:alt+enter

1.7 Qt窗口坐標體系

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

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

相關文章

Windows11+VS2019配置Libigl-2.4.1

Windows11VS2019配置Libigl-2.4.1 由于課題需要&#xff0c;所以出一篇配置Libigl的博客&#xff0c;制作不易&#xff0c;請多多點贊 一、官網下載 官網&#xff1a;https://libigl.github.io/ GitHub下載地址&#xff1a;https://github.com/libigl/libigl 這里我們選擇…

地球科學方向(Geoscience and Remote Sensing),1天見刊,當月可檢索!

CSP科學出版社&#xff0c;旨在通過為研究人員提供最佳環境來發表、參考、閱讀和引用他們的作品&#xff0c;從而為科學界服務。現已與科檢易學術達成出版戰略合作&#xff0c;現在聯合共同出版高質量學術水平的期刊&#xff0c;為方便廣大科研學者投稿方便&#xff0c;現已經建…

基于 Three.js 的 3D 模型快照生成方案

基于 Three.js 的 3D 模型快照生成方案 此方案通過 Three.js 渲染場景并異步生成圖像數據&#xff0c;同時支持分辨率縮放和 Blob 格式輸出&#xff0c;為模型預覽、截圖保存等需求提供完整解決方案。 問題分析&#xff1a; 使用html2canvas 生成的快照畫布顯示為空&#xff…

「Java基本語法」變量的使用

變量定義 變量是程序中存儲數據的容器&#xff0c;用于保存可變的數據值。在Java中&#xff0c;變量必須先聲明后使用&#xff0c;聲明時需指定變量的數據類型和變量名。 語法 數據類型 變量名 [ 初始值]; 示例&#xff1a;聲明與初始化 public class VariableDemo {publi…

SpringCloud學習筆記-2

說明&#xff1a;來源于網絡&#xff0c;如有侵權請聯系我刪除 1.提問&#xff1a;如果注冊中心宕機&#xff0c;遠程調用還能成功嗎 答&#xff1a;當微服務發起請求時&#xff0c;會向注冊中心請求所有的微服務地址&#xff0c;然后在向指定的微服務地址發起請求。在設計實…

Hac - NBh標準JSON協議使用說明文檔

Hac - NBh 標準 JSON 協議使用說明文檔 一、協議概述 Hac - NBh 標準 JSON 協議是專為物聯網設備與服務器數據交互設計的通信協議。以 JSON 格式為基礎,采用鍵值對(KV 值)組織數據,支持靈活選取數據項,通過 CBOR 格式實現高效傳輸,并利用 AES 128 加密保障數據安全。 …

k8s從入門到放棄之Service負載均衡

k8s從入門到放棄之Service負載均衡 在 Kubernetes (K8s) 中&#xff0c;Service 是一種抽象&#xff0c;它定義了一組邏輯上的 Pod 和訪問它們的策略。Service 的主要目的是提供一種可靠的方式來訪問一組具有相同標簽&#xff08;Label&#xff09;的 Pod&#xff0c;即使這些…

【題解-洛谷】P10480 可達性統計

題目&#xff1a;P10480 可達性統計 題目描述 給定一張 N N N 個點 M M M 條邊的有向無環圖&#xff0c;分別統計從每個點出發能夠到達的點的數量。 輸入格式 第一行兩個整數 N , M N,M N,M&#xff0c;接下來 M M M 行每行兩個整數 x , y x,y x,y&#xff0c;表示從 …

SpringCloud2025+SpringBoot3.5.0+gateway+webflux子服務路由報503

文章目錄 前言一、問題二、原因1.分析2.配置靜態路由再試3.定位 總結 前言 本來昨天就應該也記錄下&#xff0c;免得忘記的&#xff0c;但是有點晚了&#xff0c;酒沒寫&#xff0c;真的是被坑慘了。 當然這也是追求最新的代價&#xff0c;也是對新技術、老知識點的重溫…

破解路內監管盲區:免布線低位視頻樁重塑停車管理新標準

城市路內停車管理常因行道樹遮擋、高位設備盲區等問題&#xff0c;導致車牌識別率低、逃費率高&#xff0c;傳統模式在復雜路段束手無策。免布線低位視頻樁憑借超低視角部署與智能算法&#xff0c;正成為破局關鍵。該設備安裝于車位側方0.5-0.7米高度&#xff0c;直接規避樹枝遮…

RAG 文檔解析難點1:多欄布局的 PDF 如何解析

寫在前面 在構建檢索增強生成 (Retrieval-Augmented Generation, RAG) 應用時,高質量的數據源是成功的基石。PDF 作為一種廣泛使用的文檔格式,承載著海量的知識。然而,許多 PDF 文檔,特別是學術論文、期刊、雜志和一些報告,都采用了多欄布局 (multi-column layout)。 直…

全面掌握Pandas時間序列處理:從基礎到實戰

時間序列數據在金融分析、物聯網、商業智能等領域無處不在。作為Python數據分析的核心庫&#xff0c;Pandas提供了強大而全面的時間序列處理功能。本文將系統介紹Pandas時間序列處理的各個方面&#xff0c;從基礎概念到高級應用&#xff0c;幫助您在實際工作中高效處理時間序列…

vscode 離線安裝第三方庫跳轉庫

我安裝的是C/C的函數跳轉 下載的離線庫&#xff1a; 項目首頁 - vscode代碼自動補全跳轉插件離線安裝包:cpptools-win32.vsix是一款專為VSCode設計的離線安裝插件&#xff0c;特別適合無法連接網絡的電腦環境。通過安裝此插件&#xff0c;您的VSCode將獲得強大的代碼自動跳轉…

GitHub 趨勢日報 (2025年06月05日)

&#x1f4ca; 由 TrendForge 系統生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日報中的項目描述已自動翻譯為中文 &#x1f4c8; 今日獲星趨勢圖 今日獲星趨勢圖 1472 onlook 991 HowToCook 752 ChinaTextbook 649 quarkdown 451 scrapy 324 age…

關于如何使用VScode編譯下載keil工程的步驟演示

1、vscode的插件市場下載keil Assistant 2 、點設置 3、復制keil的地址 4、粘貼到第…

OD 算法題 B卷【最大島嶼體積】

文章目錄 最大島嶼體積 最大島嶼體積 大于0的數表示陸地&#xff0c;0表示水&#xff0c;請計算由陸地、水組成的網格中最大島嶼的體積&#xff1b;陸地的數字之和表示所在島嶼的體積&#xff0c;島嶼總是被水包圍&#xff0c;并且每座島嶼只能由水平或者垂直方向上相鄰的陸地…

一文讀懂 Docker Compose(白話版)

一、Docker Compose 是個啥&#xff1f; 想象你開餐廳&#xff1a; 單容器 一個廚師 &#x1f468;&#x1f373;Docker Compose 整個后廚團隊 &#x1f468;&#x1f373;&#x1f469;&#x1f373;&#x1f9d1;&#x1f373; 菜單 工作流程 用個菜單文件&#xff08;…

Java畢業設計:WML信息查詢與后端信息發布系統開發

JAVAWML信息查詢與后端信息發布系統實現 一、系統概述 本系統基于Java和WML(無線標記語言)技術開發&#xff0c;實現了移動設備上的信息查詢與后端信息發布功能。系統采用B/S架構&#xff0c;服務器端使用Java Servlet處理請求&#xff0c;數據庫采用MySQL存儲信息&#xff0…

單例模式與鎖(死鎖)

目錄 線程安全的單例模式 什么是單例模式 單例模式的特點 餓漢實現方式和懶漢實現方式 餓漢?式實現單例模式 懶漢?式實現單例模式 懶漢?式實現單例模式(線程安全版本) 單例式線程池 ThreadPool.hpp threadpool.cc 運行結果 線程安全和重?問題 常?鎖概念 死…

CSS標題下劃線動態進入和移開

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>CSS動態效果</title><style>div .title…