当前位置: 首页 > news >正文

Qt Study

按钮->点击->窗口->关闭窗口

connect(信号的发送者,发送具体信号,信号的接收者,信号的处理);

信号处理函数称为槽

信号槽的优点,松散耦合,信号发送端和接收端本身是没有关联的,通过connect连接将两端耦合在一起

//点击按钮,关闭当前窗口
connect(myBtn, &QPushButton::clicked, this, &QWidget::close);

自定义信号和槽

teacher.h

#ifndef TEACHER_H
#define TEACHER_H#include <QObject>class Teacher : public QObject
{Q_OBJECT
public:explicit Teacher(QObject *parent = nullptr);//自定义信号写到signals下//返回值类型为void,只需要声明,不需要实现//可以有参数,可以重载
signals:void hungry();};#endif // TEACHER_H

student.h

#ifndef STUDENT_H
#define STUDENT_H#include <QObject>class Student : public QObject
{Q_OBJECT
public:explicit Student(QObject *parent = nullptr);//可以写到public下//返回值类型为void,需要声明,也需要实现//可以有参数,也可以重载void please();signals:};#endif // STUDENT_H

student.cpp

#include "student.h"
#include <iostream>
Student::Student(QObject *parent) : QObject(parent)
{}
void Student::please()
{std::cout << "please teacher eat dinner" << std::endl;
}

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H#include <QWidget>
#include "teacher.h"
#include "student.h"
class myWidget : public QWidget
{Q_OBJECTpublic:myWidget(QWidget *parent = nullptr);Teacher *t = new Teacher(this);Student *s = new Student(this);~myWidget();
};
#endif // MYWIDGET_H

mywidegt.cpp

回调函数:在函数内部将被调函数名转换为地址作为参数供系统调用

信号可以连接信号

信号与槽的连接可以是一对多、多对一

信号的参数可以比槽多,但对应的参数在类型和顺序上要一致 (对于不匹配的,可以用匿名函数来调用相应的槽)

匿名函数的使用

  btn->show();connect(btn, &QPushButton::clicked, this, [=](){QWidget *window1 = new QWidget;window1->show();btn->setText("close");});

#include "mywidget.h"myWidget::myWidget(QWidget *parent): QWidget(parent)
{connect(this->t, &Teacher::hungry, this->s, &Student::please);emit(this->t->hungry());//    重载时,通过函数指针传递函数地址
//    //定义某类中函数的函数指针,要加类名以表作用域
//    void (Teacher:: *hungryptr) (std::string name) = &Teacher::hungry;
//    void (Student:: *pleaseptr) (std::string name) = &Student::please;
//    connect(this->t, hungryptr, this->s, pleaseptr);
//    emit(this->t->hungry("good food"));}myWidget::~myWidget()
{
}

菜单栏与工具栏

#include <QMenuBar>

#include <QToolBar>

    QMenuBar *menubar = new QMenuBar(this); //菜单栏QMenu *menu1 = new QMenu("file"); // 菜单menu1->addAction("new");menu1->addAction("open");menubar->addMenu(menu1);menubar->move(200, 300);QToolBar *toolbar = new QToolBar(this); // 工具栏toolbar->addAction("new");toolbar->addAction("open");

自定义对话框

模态对话框:不可以对其他窗口进行操作

非模态对话框:可以对其他窗口进行操作

#include <QDialog>

        // 模态QDialog log1(this);log1.resize(100, 200);log1.exec();// 非模态,用指针建立,存储在堆上,如果存在栈上匿名函数执行完就释放了// 会出现一闪而过的情况,模态的不需要QDialog *log2 = new QDialog(this);log2->resize(100, 200);log2->show();log2->setAttribute(Qt::WA_DeleteOnClose); //关闭时释放内存,不然会内存泄漏

标准对话框

#include <QMessageBox>

    QMessageBox::critical(this, "critical", "out of range");QMessageBox::information(this, "info", "text");// QMessageBox::question(this, "query", "answer", QMessageBox::Save | QMessageBox::No);if( QMessageBox::question(this, "query", "answer", QMessageBox::Save | QMessageBox::No) == QMessageBox::Save){std::cout << "select Save" << std::endl;}else{std::cout << "select No" << std::endl;}

布局

水平布局、垂直布局、栅格布局

使用时可以直接创建相应布局,将需要布局的item放入即可

或者创建Widget,放入item并选择相应布局

使用Horizontal spacer 或者 Vertical spacer来将label、按钮、编辑框等自适应窗口大小

QStringList

    QListWidgetItem *item = new QListWidgetItem("1111");QStringList strs;  // string liststrs << "111" << "222" << "333";ui->listWidget->addItem(item);ui->listWidget->addItems(strs);

相关文章:

Qt Study

按钮->点击->窗口->关闭窗口 connect(信号的发送者&#xff0c;发送具体信号&#xff0c;信号的接收者&#xff0c;信号的处理); 信号处理函数称为槽 信号槽的优点&#xff0c;松散耦合&#xff0c;信号发送端和接收端本身是没有关联的&#xff0c;通过connect连接…...

JS混淆技术探究及解密方法分析

随着Web技术的快速发展&#xff0c;JavaScript被广泛应用于网页开发、移动应用开发等领域。然而&#xff0c;JavaScript代码很容易被反编译、解密&#xff0c;这给保护网站和应用程序的安全性带来了严重的挑战。为了解决这个问题&#xff0c;JS混淆技术应运而生。JS混淆就是将J…...

智慧制硅厂 Web SCADA 生产线

我国目前是全球最大的工业硅生产国、消费国和贸易国&#xff0c;且未来该产业的主要增量也将来源于我国。绿色低碳发展已成为全球大趋势和国际社会的共识&#xff0c;随着我国“双碳”目标的推进&#xff0c;光伏产业链快速发展&#xff0c;在光伏装机需求的带动下&#xff0c;…...

案例09-数据类型不一致导致equals判断为false

一&#xff1a;背景介绍 在判断课程id和班级id的时候如果一致就像课程信息进行更新&#xff0c;如果不一致就插入一条新的数据。其实两个变量的值是一致的但是类型是不一致的。这就导致数据库中已经有一条这样的数据了&#xff0c;在判断的时候结果为false&#xff0c;就有插入…...

springsecurity中的类

Authentication AuthenticationProvider 每一个AuthenticationProvider对应一个Authentication 很多个AuthenticationProvider 由一个 ProviderManager管理 ProviderManager implements AuthenticationManager 一个ProviderManager有很多个 AuthenticationProvider Usern…...

k8s配置管理

一、configmap 1.1 configmap概述 Configmap 是 k8s 中的资源对象&#xff0c;用于保存非机密性的配置的&#xff0c;数据可以用 key/value 键值对的形式保存&#xff0c;也可通过文件的形式保存。 1.2 configmap作用 我们在部署服务的时候&#xff0c;每个服务都有自己的配置…...

技术官方文档中的代码是用什么展示的?代码高亮插件总结

****内容预警****菜鸟教程***大佬绕道我们经常看到各种技术官方文档&#xff0c;有很多代码展示的区域&#xff0c;用于我们复制粘贴代码&#xff0c;比如vue 的官网当我们需要自己实现这么一个网站的时候&#xff0c;我就开始手忙脚乱&#xff0c;这到底是咋实现的&#xff1f…...

2023年中职组网络安全竞赛——综合渗透测试解析

综合渗透测试 题目如下: PS:需求环境可私信博主,求个三连吧! 解析如下: 通过本地PC中的渗透测试平台KALI2020对服务器场景进行渗透攻击,获取到RSYNC服务所开放的端口,将RSYNC服务开放的端口数值进行MD5加密后作为FLAG提交(如MD5加密前:812);...

【全网最细PAT题解】【PAT乙】1044 火星数字(测试点2,测试点4详细解释)

题目链接 1044 火星数字 题目描述 火星人是以 13 进制计数的&#xff1a;地球人的 0 被火星人称为 tret。 地球人数字 1 到 12 的火星文分别为&#xff1a;jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。 火星人将进位以后的 12 个高位数字分别称为&#xff1a…...

rsync+xinetd+inotify+sersync

一、介绍 1.1、rsync 对比 scp 相同&#xff1a; 都有拷贝的功能不同&#xff1a; rsync:具有增量复制&#xff0c;每次复制的时候&#xff0c;会扫描对端是否在同路径下有我要发送的一样的文件或者目录&#xff0c;如果&#xff0c;如果存在&#xff0c;则不进行复制。边复制&…...

CSS - 扫盲

文章目录1. 前言2. CSS2.1 css 的引入方式2.2 选择器2.3 CSS 常用属性2.3.1 字体属性2.3.2 文本属性2.3.3 背景属性2.4 圆角矩形2.5 元素的显示模式2.6 盒子模型2.7 弹性布局1. 前言 上文我们简单 将 HTML 过了一遍 &#xff0c; 知道了 HTML 知识表示页面的结构和内容 &#x…...

ChatGPT能完全取代软件开发吗,看看它怎么回答?

最近网上一直疯传&#xff0c;ChatGPT 最可能取代的 10 种工作。具体包括①、技术类工作&#xff1a;程序员、软件工程师、数据分析师②、媒体类工作&#xff1a;广告、内容创作、技术写作、新闻③、法律类工作&#xff1a;法律或律师助理④、市场研究分析师⑤、教师⑥、金融类…...

Vue3学习笔记

一、Ref ref, isRef, shallowRef, triggerRef, customRef ref返回的是es6的一个class类&#xff0c;取值和修改都要加上.valueref 和 shallowRef不能一起写&#xff0c;会引起shallowRef的视图更新ref shallowRef triggerRef <template><div class"home&quo…...

【React】pro-mobile

1.项目介绍 实现react移动端项目 2.目标&#xff1a; 能够应用CRAReactMobxAntd-mobile开发C端项目掌握基于React的C端项目开发流程学会如何应用next优化项目 3.使用技术栈 脚手架&#xff1a;cra dva-cliumi 脚本&#xff1a;ts react版本&#xff1a;react v18 2022年更…...

Substrate 基础教程(Tutorials) -- 授权特定节点

五、授权特定节点 在添加可信节点中&#xff0c;您看到了如何使用一组已知的验证器节点构建一个简单的网络。该教程演示了一个简化版的许可网络&#xff08;permissioned network&#xff09;。在一个被许可的网络中&#xff0c;只有被授权的节点&#xff08;authorized nodes…...

使用qemu-img转换镜像格式

qemu功能强大&#xff0c;详细了解其功能请到官网查看 https://www.qemu.org/docs/master/system/images.html qemu-img能将RAW、qcow2、VMDK、VDI、VHD&#xff08;vpc&#xff09;、VHDX、qcow1或QED格式的镜像转换成VHD格式&#xff0c;也可以实现RAW和VHD格式的互相转换。 …...

Springboot怎么集成Thymeleaf模板引擎?

Thymeleaf介绍Thymeleaf&#xff0c;是一个XML/XHTML/HTML模板引擎&#xff0c;开源的java库&#xff0c;可以用于SpingMVC项目中&#xff0c;用于代替JSP、FreeMarker或者其他的模板引擎&#xff1b;页面与数据分离&#xff0c;提高了开发效率&#xff0c;让代码重用更容易。S…...

LiveGBS国标GB/T28181视频流媒体平台-功能视频集中录制存储云端录像H264|H265|HEVC视频存储

LiveGBS国标GB/T28181视频流媒体平台-视频集中录制存储云端录像H264|H265|HEVC视频存储1、云端录像存储2、手动配置录像2.1、按需录像2.2、一直录像3、录像计划3.1、录像计划入口3.2、新增录像计划3.3、编辑录像计划3.4、关联通道4、查看云端录像4.1、查看录像4.1.1、时间轴模式…...

IntelliJ IDEA如何整合Maven图文教程详解

Maven 1.Maven简述 Maven是一个构建工具,服务与构建.使用Maven配置好项目后,输入简单的命令,如:mvn clean install,Maven会帮我们处理那些繁琐的任务. Maven是跨平台的. Maven最大化的消除了构建的重复. Maven可以帮助我们标准化构建过程.所有的项目都是简单一致的,简化了学习…...

图数据库认证考试 NGCP 错题解析 vol.02:这 10 道题竟无一人全部答对

如果你读过「NebulaGraph 错题解析第一期」&#xff0c;大概知道在错题解析未出来之前&#xff0c;NebulaGraph 专业技能认证 NGCP&#xff08;全称 NebulaGraph Certified Professional&#xff09;的通过率仅有 16.7%。但是&#xff0c;经过上一轮 NebulaGraph 认证考试出题人…...

终极指南:如何为Zotero 6.0安装完美夜间模式插件,告别深夜阅读疲劳

终极指南&#xff1a;如何为Zotero 6.0安装完美夜间模式插件&#xff0c;告别深夜阅读疲劳 【免费下载链接】zotero-night Night theme for Zotero UI and PDF 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-night 还在为深夜阅读文献时刺眼的屏幕光线而烦恼吗&a…...

好用还专业!盘点2026年备受推崇的一键生成论文工具

一天写完毕业论文在2026年已不再是天方夜谭。最新实测显示&#xff0c;一键生成论文工具正在颠覆传统写作方式&#xff0c;覆盖选题、文献、写作、降重、排版等核心场景&#xff0c;真正实现高效搞定论文&#xff0c;学生党必备神器。 一、全流程王者&#xff1a;一站式搞定论文…...

6大终极方案!WarcraftHelper全方位解决魔兽争霸III在Win10/11兼容性难题

6大终极方案&#xff01;WarcraftHelper全方位解决魔兽争霸III在Win10/11兼容性难题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 经典游戏魔兽争霸…...

EN50155以太网交换机的X键位M12插座在PCB板上同一高度方法

在轨道交通车载EN50155以太网交换机的PCB设计中&#xff0c;X键位M12插座&#xff08;千兆/万兆接口&#xff09;常需多个并排或阵列布局。由于X编码插座引脚数较多&#xff08;8芯&#xff09;且结构复杂&#xff0c;确保所有插座在PCB板上的同一高度&#xff08;共面性&#…...

利用快马平台快速构建免费节点测试工具原型,十分钟完成开发

今天想和大家分享一个快速验证免费节点可用性的小工具开发过程。作为一个经常需要测试代理节点的开发者&#xff0c;手动一个个验证实在太费时间&#xff0c;于是我用InsCode(快马)平台快速搭建了一个原型工具&#xff0c;整个过程比想象中简单很多。 需求分析 免费节点测试工具…...

ETH-01模块避坑指南:为什么HTTP协议不行而TCP直接监听成功?

ETH-01模块协议选择实战&#xff1a;从HTTP困境到TCP高效监听 第一次拿到ETH-01这个串口转以太网模块时&#xff0c;我和大多数开发者一样&#xff0c;本能地选择了HTTP协议进行通信测试。毕竟在Web开发领域&#xff0c;HTTP就像空气一样无处不在。但当我花了整整两天时间调试…...

解构 Claude Code

大多数开发者认为 AI 编码工具就是一个聊天界面。你输入&#xff0c;它回复。你复制代码。你继续前进。 Claude Code 完全不同。 1、传统方式 vs Claude Code 方式 想象雇佣一位聪明的开发者&#xff0c;他他* 每次关闭对话就忘记一切 不知道自己在什么项目除非你每次都描述…...

ESP32 IDF环境下DHT11温湿度读取避坑指南:从时序图到数据拼接的完整解析

ESP32 IDF环境下DHT11温湿度读取避坑指南&#xff1a;从时序图到数据拼接的完整解析 在物联网设备开发中&#xff0c;温湿度传感器是最基础也最常用的环境感知元件之一。DHT11作为一款低成本、单总线数字输出的温湿度传感器&#xff0c;被广泛应用于各类嵌入式项目中。然而&…...

医学影像组学实战:Pyradiomics YAML配置文件全解析(附完整示例)

医学影像组学实战&#xff1a;Pyradiomics YAML配置文件全解析&#xff08;附完整示例&#xff09; 在医学影像分析领域&#xff0c;特征提取是构建精准诊断模型的关键步骤。Pyradiomics作为开源的医学影像组学工具包&#xff0c;通过YAML配置文件提供了高度灵活的特征提取方案…...

PHY6252:解锁蓝牙5.2 SOC在物联网与可穿戴设备中的低功耗高性能设计

1. PHY6252&#xff1a;重新定义蓝牙5.2 SOC的边界 第一次拿到PHY6252开发板时&#xff0c;我习惯性地看了一眼电流表——13μA的睡眠模式功耗让我立刻意识到&#xff0c;这绝不是一款普通的蓝牙芯片。作为深耕物联网领域多年的开发者&#xff0c;我见过太多标榜"低功耗&q…...