Qt(基本組件和基本窗口類)

一、基本組件

1. Designer設計師

為什么要上來先將這個東西呢,這個是QT外置的設計界面的工具,沒啥用,所以了解一下。我們用的多的是QT內置的界面設計,只需要我們雙擊我們創建的項目的.ui文件就可以進入這個界面,你對界面所有的修改都會被保存到你的.ui文件里,被寫成類似html語言的文件(是類似)。然后我們可以通過ui這個作用域去調用我們設計過的組件,也可以純代碼去創建組件。很明顯前者更方便。舉個例子,我們想創建一個按鈕,有兩種方式:

1.1 長按拖到界面內

(1) 可以拖動放置這個按鈕的位置

(2) 雙擊可以改變按鈕的文字

1.2 使用代碼創建

(1) 先得找到QPushButton類,使用類名去創建一個按鈕。

private:QPushButton *but1;

(2) 設置按鈕大小、位置和文字

    // 移動按鈕到200,200的位置but1->move(200,200);// 設置按鈕的寬高but1->resize(100,50);// 設置按鈕的文字but1->setText("你好");

?所以Ui界面能實現的,代碼都能實現,只是更繁瑣,小白最好都練習一下,順便練習查找幫助文檔的能力。查找文檔的時候,當前類找不到的函數可以去父類查找。

1.3 界面文件與C++代碼的關系

2. 布局layout

可以把布局看做成一個透明的盒子,內部可以放置子組件,這些內部的子組件會按照布局預設的規則進行排序。

2.1 四種布局方式:

垂直布局:內部組件豎著排成一列。

水平布局:內部組件橫著排成一排。

格柵布局:內部組件排布成n*m的表格。

表單布局:用戶搭建用戶輸入的布局效果

2.2 布局的使用
(1) 設置屬性。可以設置組件之間的間隔,組件與layout框的間隔(上下左右)等。
補充:所有組件都可以在右下角屬性第一行更改組件名字。

(2) 選中布局后,點擊可以打破布局。

布局可以貼合窗口,只需要選中窗口對象后,再次點擊按鈕之一即可。

(3) 可以使用伸展組件填充空白。

(4) 布局也是可以嵌套的,對于外層布局而言,內層布局相當于外層布局的一個子組件。

3.?QLabel標簽

顯示文本或圖像的簡單控件,支持富文本和超鏈接。常用于靜態內容展示或搭配其他控件作為說明標簽。但是需要注意的是:QLabel不能與用戶交互(不能點擊),只能展示使用,因此沒有合適的信號函數。

基本屬性:

4.?QAbstractButton按鈕類

QAbstractButton是按鈕類的抽象基類,因此內部包含類按鈕的基礎屬性和函數。

QAbstractButton按鈕類的基礎屬性:

按鈕常用信號:

4.1?Check Box(復選框)

概念

  • 允許用戶多選,每個Check?Box可以獨立選中或取消。
  • 常用于“興趣愛好”、“協議同意”等場景。

常用信號/事件

  • Qt:stateChanged(int)、toggled(bool)

4.2 Radio Button(單選按鈕)

概念

  • 一組Radio Button中只能選中一個,常用于“性別選擇”、“支付方式”等場景。
  • 組內互斥,選中一個會自動取消其他。

常用信號/事件

  • Qt:toggled(bool)

4.3 Push Button(普通按鈕/按鍵)

概念

  • 最常見的按鈕,點擊后立即觸發某個操作(如“提交”、“確定”、“關閉”)。
  • 沒有選中/未選中狀態,只有“按下”動作。

常用信號/事件

  • Qt:clicked()、pressed()、released();(分別為點擊,按壓和釋放的信號)

4.4 信號/事件總結表

控件類型Qt信號Web事件典型用途
Check?BoxstateChanged, toggledchange多選
Radio?Buttontoggledchange單選(組內互斥)
Push?Buttonclicked, pressedclick操作觸發

4.5 練習:

實現點擊radio button觸發槽函數,使用toggled信號函數。

dialog.h:
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QDebug>namespace Ui {
class Dialog;
}class Dialog : public QDialog
{Q_OBJECTpublic:explicit Dialog(QWidget *parent = 0);~Dialog();private:Ui::Dialog *ui;private slots:void toggledSlot(bool);                //槽函數
};#endif // DIALOG_H
dialog.cpp:
#include "dialog.h"
#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog)
{ui->setupUi(this);//連接信號槽函數,選中按鍵就進入槽函數執行connect(ui->radioButton,SIGNAL(toggled(bool)),this,SLOT(toggledSlot(bool)));
}Dialog::~Dialog()
{delete ui;
}void Dialog::toggledSlot(bool checked)
{if(checked){qDebug() << "被選中";}else{qDebug() << "不選了";}
}

5. QLineEdit單行文本輸入框(掌握)

QLineEdit用于輸入一個單行文本,常用的屬性:

常用的信號:

三、基本窗口類

基本界面類就以下三種,一般都是創建的時候把.h文件和.c文件一起創建的很少單獨取創建。

當我們創建一個項目的時候,會有下面三種選擇,但是當我們創建了項目想要實現多個串口跳轉的時候,會發現可以單獨創建.c或者.h文件,都是依情況而定。

1. QWidget

作為所有用戶界面對象的基類,QWidget?提供了窗口的基本屬性和行為。它可以包含子控件,處理用戶輸入事件(如鼠標、鍵盤),并管理布局。非窗口部件需要嵌入到父部件中顯示。

QWidget的屬性在Designer中顯示為淡黃色。常用屬性如下:

策略:除非必要情況,或者實現特殊功能,否則我們的策略盡量不要修改,因為當前的策略對組件是最友好的。

2. QMainWindow

專為主窗口設計的類,提供了標準應用程序框架,包括菜單欄(QMenuBar)、工具欄(QToolBar)、狀態欄(QStatusBar)和中心部件區域。通過?setCentralWidget()?可設置核心內容。

屬性:

3. QDialog

用于創建模態或非模態對話框的基類。QFileDialog(文件選擇)、QMessageBox(提示框)等是其常用子類。通過?exec()?實現模態阻塞,show()?實現非模態顯示。

沒有特殊的屬性。

4.單項目多窗口文件

在一個項目中創建多個窗口,右鍵項目點擊添加新文件,添加新文件選擇QT文件

三種窗口根據需要選擇,上面三個都是對話框類型,就是初始帶不帶按鈕,一般選第三個,什么也不帶。

后面就是改文件名下一步就行

三、總結:

這一部分主要是介紹,下一節將一些用法,最好保存一下隨時查看。

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

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

相關文章

docker與k8s的容器數據卷

Docker容器數據卷 特性 docker鏡像由多個只讀層疊加而成&#xff0c;啟動容器時&#xff0c;Docker會加載只讀鏡像層并在鏡像棧頂部添加一個讀寫層。如果運行中的容器修改了現有的一個已經存在的文件&#xff0c;那么該文件將會從讀寫層下面的只讀層復制到讀寫層&#xff0c;該…

自然語言處理技術應用領域深度解析:從理論到實踐的全面探索

1. 引言:自然語言處理的技術革命與應用前景 自然語言處理(Natural Language Processing,NLP)作為人工智能領域的核心分支,正在以前所未有的速度改變著我們的數字化生活。從最初的規則基礎系統到如今基于深度學習的大語言模型,NLP技術經歷了從理論探索到實際應用的深刻變…

OpenGLRender開發記錄(二): 陰影(shadowMap,PCF,PCSS)

目錄已實現功能陰影shadowMapPCFPCSS實現shadowMapPCFPCSS陰影GitHub主頁&#xff1a;https://github.com/sdpyy1 OpenGLRender:https://github.com/sdpyy1/CppLearn/tree/main/OpenGL 已實現功能 除了上次實現IBL之外&#xff0c;項目目前新增了imGUI的渲染&#xff0c;更方便…

Linux:日志亂碼

1、Linux日志亂碼可能是XShell客戶端編碼沒設置為UTF-8引起的&#xff0c;按照以下步驟&#xff0c;設置終端格式&#xff1a;中文版&#xff1a;打開Xshell會話屬性&#xff08;文件→屬性→終端→編碼&#xff09;&#xff0c;選擇與服務器一致的編碼格式&#xff08;如UTF-8…

Rouge:面向摘要自動評估的召回導向型指標——原理、演進與應用全景

“以n-gram重疊量化文本生成質量&#xff0c;為摘要評估提供可計算標尺” Rouge&#xff08;Recall-Oriented Understudy for Gisting Evaluation&#xff09; 是由 南加州大學信息科學研究所&#xff08;ISI&#xff09;的Chin-Yew Lin 于2004年提出的自動文本摘要評估指標&am…

[STM32][HAL]stm32wbxx 超聲波測距模塊實現(HY-SRF05)

前言 在電子技術應用中,距離測量是一個常見且重要的需求。超聲波模塊因其測量精度較高、成本較低、易于使用等優點,被廣泛應用于機器人避障、液位檢測、智能停車系統等領域。該文主要講解以stm32wb芯片為主控,用HAL庫來對HY-SRF05超聲波模塊進行代碼編寫,實現基本的驅動和測…

MySQL 性能調優實戰指南:從診斷到優化全解析

引言在日常的數據庫運維工作中&#xff0c;我們經常需要對 MySQL 數據庫進行診斷和性能分析。本文將介紹一套全面的 MySQL 診斷腳本&#xff0c;適用于 MySQL 8.0&#xff08;兼容 8.0.15 及以上版本&#xff09;&#xff0c;涵蓋事務鎖分析、性能瓶頸定位、配置檢查、連接狀態…

8. 狀態模式

目錄一、應用背景二、狀態模式2.1 解決的問題2.2 角色2.3 實現步驟三、通用設計類圖四、實現4.1 設計類圖4.2 狀態轉換圖4.3 代碼實現一、應用背景 某對象發生變化時&#xff0c;其所能做的操作也隨之變化。應用程序的可維護性和重用性差代碼的邏輯較復雜 二、狀態模式 2.1 …

php語法--foreach和in_array的使用

文章目錄foreach基礎語法&#xff1a;案例1&#xff1a;引用傳遞模式&#xff1a;嵌套數組處理&#xff1a;避免在循環中計算數組長度&#xff1a;使用引用減少內存拷貝&#xff1a;打印數組in_array基礎使用嚴格使用foreach 基礎語法&#xff1a; foreach ($iterable as $va…

ES6模塊詳解:核心語法與最佳實踐

以下是 EMAScript 6&#xff08;ES6&#xff09;模塊規范的核心要點及細節解析&#xff1a; &#x1f4e6; 一、核心語法導出&#xff08;export&#xff09; 命名導出&#xff1a;支持導出多個具名成員。export const a 1; export function b() { /* ... */ } // 或集中導出 …

Python day25

浙大疏錦行 Python day25. 內容&#xff1a; 異常處理&#xff0c;在日常的編碼工作過程中&#xff0c;為了避免由于各種bug導致的異常情況&#xff0c;我們需要引入異常處理機制&#xff0c;它的工作場景是當程序運行出現意外時&#xff0c;可以根據編碼規則處理響應的錯誤。…

mac llama_index agent算術式子計算示例

本文通過簡單數學計算&#xff0c;示例llama_index使用agent解決復雜任務過程。 假設mac本地llama_index環境已安裝&#xff0c;過程參考 mac測試ollama llamaindex-CSDN博客 測試mac筆記本內存8G&#xff0c;所以使用較小LLM完成示例。 ollama pull qwen3:1.7b qwen3:1.7b能…

uni-app小程序云效持續集成

創建項目 必須是 cli 命令行創建的 uni-app 小程序項目參考uni-app官方構建命令&#xff1a; npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project生成小程序代碼上傳密鑰 管理-開發設置-小程序代碼上傳生成的文件放在根目錄即可 安裝持續集成插件 pnpm install uni-mi…

uniapp+高德地圖實現打卡簽到、打卡日歷

一、注冊高德地圖。應用管理創建應用&#xff0c;分別添加Andriod平臺、Web服務、Web端、微信小程序四種類型的key。二、考勤規則打卡地點選擇位置代碼&#xff1a;<script setup lang"ts"> import { onMounted, onUnmounted, reactive, ref, watchEffect } fr…

CentOS 7.9 + GCC9 離線安裝 IWYU(Include What You Use)

本教程適用于 離線環境下在 CentOS 7.9 系統中使用 GCC 9 離線安裝 IWYU 的完整步驟&#xff0c;涵蓋 Clang 11.1.0 編譯、IWYU 構建以及頭文件自動優化流程。&#x1f4e5; 一、準備安裝包請提前下載以下源碼包&#xff08;可通過在線機器提前下載&#xff0c;再傳輸到離線環境…

基于Dapr Sidecar的微服務通信框架設計與性能優化實踐

基于Dapr Sidecar的微服務通信框架設計與性能優化實踐 一、技術背景與應用場景 隨著微服務架構的廣泛應用&#xff0c;分布式系統中服務間通信、可觀察性、可靠性等問題日益凸顯。Dapr&#xff08;Distributed Application Runtime&#xff09;作為一個開源的微服務運行時&…

Claude Code 超詳細完整指南(2025最新版)

&#x1f680; 終端AI編程助手 | 高頻使用點 生態工具 完整命令參考 最新MCP配置 &#x1f4cb; 目錄 &#x1f3af; 快速開始&#xff08;5分鐘上手&#xff09;&#x1f4e6; 詳細安裝指南 系統要求Windows安裝&#xff08;WSL方案&#xff09;macOS安裝Linux安裝安裝驗…

【lucene】SegmentReader初始化過程概述

readers[i] new SegmentReader(sis.info(i), sis.getIndexCreatedVersionMajor(), IOContext.READ); 這個方法已經把所有的文件都讀完了么&#xff1f;沒有“讀完”&#xff0c;但已經**全部“打開”**了。| 動作 | 是否發生 | |---|---| | **打開文件句柄 / mmap** | ? 立即完…

通俗理解主機的BIOS和UEFI啟動方式

“對于 22.04 版本&#xff0c;這些操作說明應適用于通過 BIOS 或 UEFI 兩種方式創建和運行啟動盤。”我們來詳細解釋一下這句話的含義&#xff0c;這句話的核心意思是&#xff1a;你按照這個教程制作出來的 Ubuntu U 盤&#xff0c;將擁有極佳的兼容性&#xff0c;無論是在老電…

Canal 1.1.7的安裝

數據庫操作的準備 1、開啟 Binlog 寫入功能&#xff0c;配置 binlog-format 為 ROW 模式&#xff0c;my.cnf 中配置如下: vi /etc/my.cnf [mysqld] log-binmysql-bin # 開啟 binlog binlog-formatROW # 選擇 ROW 模式 server_id1 # 配置 MySQL replaction 需要定義&#xff0c;…