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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;…