C++ Qt

一、概念

        跨平台的图形应用界面应用程序框架

二、常用快捷键

快捷键解释
F4在对应的.cpp.h之间快速切换
ctrl + b编译程序
ctrl + r运行程序
ctrl + shift + ↑ / ↓向上 / 下移动选中的代码
ctrl + i自动对齐选中的代码

三、对象树

总结:父控件被析构,包含其中的子控件也会被自动析构。

顺序:         构造(先父后子)         析构(先子后父)

  • QObject是以对象树的形式组织起来的。
    • 当你创建一个QObject对象时,QObject构造函数接收一个QObject指针作为参数,这个参数就是parent,也就是父对象指针。
    • 相当于,在创建QObject对象时,会提供一个QObject的父对象。刚刚创建的对象会自动添加到父对象的children()列表中。
    • 父对象析构时,children列表中的对象也会析构。(父对象不是继承意义的父类!

四、常用组件

4.1 QWidget

        创建空窗口

函数名称解释
setWindowTitle(String text)设置窗口标题内容
resize(int width, int height)重新设置窗口大小
setFixedSize(int width, int heigth)设置固定窗口大小
show()显示窗口

4.2 QMainWindow

        

4.3 QPushButton

        QPushButton属于QWidgets模块,需要包含头文件#include<QPushButton>

函数名称解释
QPushButton(String text, QWidget* qw)构造方法,设置文本父窗口
setText(String text)设置按钮文本内容
resize(int width, int height)设置按钮大小
move(int x, int y)设置按钮坐标
setParent(QWidget* qw)设置父窗口
show()独立窗口显示按钮(一般不这样使用)

五、信号和槽

        信号:触发事件的类型

        槽:收到指定信号后的处理函数

5.1 连接方式

        连接信号采用connect函数。声明如下:

函数声明解释

static connect(const QObject* sender

                        const char* signal

                        const QObject* receiver

                        const char* slot

Qt::ConnectionType type = Qt::AutoConnection);

第一个参数sender:发送信号的部件指针

第二个参数signal:信号的类型

第三个参数receiver:信号的接收者

第四个参数slot,也就是处理函数的名称(指针)

 示例如下:(对一个退出按钮设置退出窗口槽)

QWidget *w = new QWidget;//窗口
QPushButton *btn = new QPushButton("退出按钮", w);//按钮

connect(btn, &QPushButton::clicked, w, &QWidget::close);

5.2 自定义信号

        在类中声明signals:,并将信号写入其中。

        (信号只写声明不写实现

        (信号返回值void

        (信号可以重载

5.2.1 触发信号

        触发信号采用emit关键字,举例如下:

//触发btn组件的sign01信号
emit btn->sign01();

5.3 自定义槽

        在类中声明public slots:,并将写入其中。

        (槽必须 声明 + 实现

        (槽返回值void

        (槽可以重载

5.4 信号与槽的参数传递

        在connect时,会检查信号与槽的参数类型和数目是否匹配。

  • 如果类型不匹配,Qt会发出警告,并不予连接

        (在Qt4中,参数个数:信号可以大于,但类型必须匹配

  • 如果类型匹配,Qt会自动将信号的参数按序发送给

下边是一个自定义带参信号与槽的简单例子,便于理解:

class MyWidget : public QWidget {
//信号
signals:
    void mySign(Qstring s);

//槽
public slots:
    void mySlot(Qstring s) {
        qDebug() << s;
    }

public :
    //connect函数
    void initConnect() {
        //通过函数指针设置 信号 与 槽 的地址
        //因为如果直接传递函数地址,connect无法识别函数重载方式
        void (MyWidget:: *sign01)(QString) = &MyWidget::mySign;
        void (MyWidget:: *slot01)(QString) = &MyWidget::mySign;
        //连接
        connect(this, sign01, this, slot01);
    }

    //触发信号函数
    void myEmit() {
        emit mySign("Hello, CC.");
    }
}

5.5 多连多

        可以多次调用connect函数,将一个信号连接多个信号,这样可以实现一个出发多个基础槽函数的组合。同理,也可以一个信号连接多个槽函数多个信号连接同一个槽函数

比如:“LEFT信号”对应“左槽”,“UP信号”对应“上槽”。

         当我们需要设计一个“左上信号”,只需要调用两次connect函数即可:

connect(this, up_left, this, UP);
connect(this, up_left, this, LEFT);

 5.6 断开连接

        断开信号与槽、信号与信号的连接,可以采用disconnect函数实现,声明如下:

函数声明解释

static disconnect(const QObject* sender

                        const char* signal

                        const QObject* receiver

                        const char* slot

Qt::ConnectionType type = Qt::AutoConnection);

第一个参数sender:发送信号的部件指针

第二个参数signal:信号的类型

第三个参数receiver:信号的接收者

第四个参数slot,也就是处理函数的名称(指针)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/908216.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

爬虫笔记22——当当网图书详情页静、动态数据爬取

当当网动态数据爬取 静态数据爬取动态数据爬取接口参数的获取 静态数据爬取 进入图书详情&#xff0c;这里的图书数据信息比如标题、价格、图片都是非结构化数据&#xff0c;可以使用xpath语法提取。是很简单的数据采集了&#xff0c;就不细说了。 动态数据爬取 滑到下面这里的…

zip文件加密成图片文件-到解密

加密 1&#xff0c;准备&#xff1a;图片 zip文件 2&#xff0c;新建一个.txt 根据自己的对应文件修改&#xff1a; copy 图片名.后缀/b压缩包名.后缀自定义图片名.后缀注意&#xff0c;图片后缀最后保持一至&#xff0c;测试了 jpg png 压缩包 zip 3&#xff0c;把上…

【深度学习】Bert下载和使用(以bert-base-uncased为例)

【深度学习】Bert下载和使用&#xff08;以bert-base-uncased为例&#xff09; 代码报错报错原因解决方法解决步骤1.进入Hugging Face&#xff0c;检索bert-base-uncased2.点击Files and versions3.下载文件4.下载的文件放入文件夹5.代码修改 代码报错 bert BertModel.from_p…

Java基于SpringBoot 的校园外卖点餐平台微信小程序(附源码,文档)

大家好&#xff0c;我是Java徐师兄&#xff0c;今天为大家带来的是Java基于SpringBoot 的校园外卖点餐平台微信小程序。该系统采用 Java 语言 开发&#xff0c;MySql 作为数据库&#xff0c;系统功能完善 &#xff0c;实用性强 &#xff0c;可供大学生实战项目参考使用。 博主介…

ES索引:索引管理

索引管理 再讲索引&#xff08;Index&#xff09;前&#xff0c;我们先对照下 ElasticSearch Vs 关系型数据库&#xff1a; PUT /customer/_doc/1 {"name": "DLBOY" }系统默认是自动创建索引的 如果我们需要对这个建立索引的过程做更多的控制&#xff1a…

Python小游戏20——超级玛丽

首先&#xff0c;你需要确保你的Python环境中安装了pygame库。如果还没有安装&#xff0c;可以使用以下命令进行安装&#xff1a; bash pip install pygame 运行效果展示 代码展示 python import pygame import sys # 初始化pygame pygame.init() # 设置屏幕尺寸 screen_width …

ZDH权限-扩展支持数据权限

目录 项目源码 预览地址 安装包下载地址 ZDH权限模块 ZDH权限扩展更细粒度方案 第一种方案&#xff1a; 第二种方案&#xff1a; ZDH权限扩展支持数据权限-新增属性 总结 感谢支持 项目源码 zdh_web: GitHub - zhaoyachao/zdh_web: 大数据采集,抽取平台 预览地址 后…

Unity humanoid 模型头发动画失效问题

在上一篇【Unity实战笔记】第二十二 提到humanoid 模型会使原先的头发动画失效&#xff0c;如下图所示&#xff1a; 头发摆动的是generic模型和动画&#xff0c;不动的是humanoid模型和动画 一开始我是尝试过在模型Optimize Game objects手动添加缺失的头发骨骼的&#xff0c;奈…

数据结构之线段树

线段树 线段树&#xff08;Segment Tree&#xff09;是一种高效的数据结构&#xff0c;广泛应用于计算机科学和算法中&#xff0c;特别是在处理区间查询和更新问题时表现出色。以下是对线段树的详细解释&#xff1a; 一、基本概念 线段树是一种二叉搜索树&#xff0c;是算法竞…

Kubernetes——part9-2 kubernetes集群java项目上云部署

一、部署前准备工作 1.1 部署项目情况 1.1.1 业务部署架构 单体服务架构分布式服务架构微服务架构超微服务架构 1.1.2 项目涉及第三方服务 关系型数据库系统 MySQL缓存服务 Redis memcache协调服务 zookeeper消息中间件服务 kafka rabbitmq服务注册 服务发现 nacos 1.1.3…

Verilog实现的莫尔斯电码发生器

莫尔斯或者摩尔斯电码(Morse Code)&#xff0c;发明于1837年(另有一说是1836年)&#xff0c;通过不同的排列顺序来表达不同的英文字母、数字和标点符号&#xff0c;在这里作一简单处理&#xff0c;仅产生点(Dit)和划(Dah)&#xff0c;时长在0.25秒之内为点&#xff0c;超过为划…

【输出1到N之间的偶数】

【输出1到N之间的偶数】 C语言实现C实现Java实现Python实现 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 请写程序实现输出1-N之间的所有偶数。 输入 输入一个整数N 输出 如果N<1输出error&#xff0c;否则&#xff0c;输出1-N之间…

Mac上的免费压缩软件-FastZip使用体验实测

FastZip是Mac上的一款免费的压缩软件&#xff0c;分享一下我在日常使用中的体验 压缩格式支持7Z、Zip&#xff0c;解压支持7Z、ZIP、RAR、TAR、GZIP、BZIP2、XZ、LZIP、ACE、ISO、CAB、PAX、JAR、AR、CPIO等所有常见格式的解压 体验使用下来能满足我所有的压缩与解压的需求&a…

华为云计算知识总结——及案例分享

目录 一、华为云计算基础知识二、华为云计算相关案例实战案例一&#xff1a;搭建弹性云服务器&#xff08;ECS&#xff09;并部署Web应用案例二&#xff1a;构建基于OBS的图片存储和分发系统案例三&#xff1a;基于RDS的高可用数据库应用案例四&#xff1a;使用华为云DDoS防护保…

RHCE——DNS域名解析服务器、selinux、防火墙

1、DNS简介 DNS &#xff08; Domain Name System &#xff09;是互联网上的一项服务&#xff0c;它作为将域名和 IP 地址相互映射的一个分布式 数据库&#xff0c;能够使人更方便的访问互联网。 DNS 系统使用的是网络的查询&#xff0c;那么自然需要有监听的 port 。 DNS 使…

使用PostgreSQL进行高效数据管理

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用PostgreSQL进行高效数据管理 PostgreSQL简介 安装PostgreSQL 在Ubuntu上安装PostgreSQL 在CentOS上安装PostgreSQL 在macOS上…

实现GUI界面中的logo图片的编码与隐藏

实现GUI界面中的logo图片的编码与隐藏 一、问题描述二、解决办法 一、问题描述 利用PyQt5编写的GUI界面&#xff0c;有时候需要我们添加自定义的图片来作为UI界面的logo&#xff0c;在源码使用时&#xff0c;logo的形式一般不影响使用&#xff0c;但是当我们需要将软件进行打包…

真·香!深度体验 zCloud 数据库云管平台 -- DBA日常管理篇

点击蓝字 关注我们 zCloud 作为一款业界领先的数据库云管平台&#xff0c;通过云化自治的部署能力、智能巡检和诊断能力、知识即代码的沉淀能力&#xff0c;为DBA的日常管理工作带来了革新式的简化与优化。经过一周的深度体验&#xff0c;今天笔者与您深入探讨 zCloud 在数据库…

Docsify文档编辑器:Windows系统下个人博客的快速搭建与发布公网可访问

文章目录 前言1. 本地部署Docsify2. 使用Docsify搭建个人博客3. 安装Cpolar内网穿透工具4. 配置公网地址5. 配置固定公网地址 前言 本文主要介绍如何在Windows环境本地部署 Docsify 这款以 markdown 为中心的文档编辑器&#xff0c;并即时生成您的文档博客网站&#xff0c;结合…

AI虚拟主播中的订单处理模块开发探索‌!

‌AI虚拟主播作为新兴的数字媒体形式&#xff0c;正在逐步改变着内容创作与传播的格局&#xff0c;它们不仅能够提供24小时不间断的直播服务&#xff0c;还能通过智能算法实现与观众的实时互动&#xff0c;极大地丰富了用户体验。 而在AI虚拟主播的背后&#xff0c;一个高效、…