QT信号和槽

2023-11-06

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、信号和槽

信号和槽式用于对象之间的通信,类似于后端与前端建立连接的接口地址。
信号是由发送者发送,槽可以看作接收方
信号和槽是QT特有的信号传输机制,他可以让互不干扰的对象建立联系
利用connect函数建立
槽的本质是类的成员函数,其参数可以是任意类型和C++成员函数没什么区别。可以是虚函数,也可被重载,
唯一区别是槽可以与信号连接在一起,,每当和槽连接的信号被发送的时候就会调用槽
也可以信号发送信号,然后在发送给槽做相应的操作

信号的特点:

普通函数,不需要实现,使用signal关键字声明,可以自定义信号,没有返回值,可以带参数,可以适合用emit关键字发送信号

槽的特点

可自定义槽函数
槽函数没有返回值
可以带参数

二、连接

1、QT4

通过宏
SIGNAL SLOT
SLGNAL()/SLOT两个宏江函数转体->字符串
connect(sender,SLGNAL(sig1(int,double,QString)),receiver,SLOT(sil1(int,doublemQString)))
缺点 编译时不会做错误检查

2、QT5

信号槽使用的函数地址
connect(sender,&Sender::sig1,receiver,&Receiver::slot1)
优点 编译过程中会对函数类型,个数做检查

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

四、注意事项

信号/槽函数参数个数是可以不一样的
槽函数参数个数可以少于信号的参数个数
不可逆

五、扩展

信号可以连接信号
一个信号可以连接多个槽函数
一个槽函数可以同时被多个信号连接
槽函数可以使用lambda表达式
信号槽连接之后,可以被断开disconnect

下面是主函数中写的,其他的创建项目自动添加,只需要把下面的代码复制到主cpp就好
实例代码 基于QT4

#include "widget.h"
#include <QPushButton>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QPushButton *btn = new QPushButton("adsdadww ",this);
    btn->show();
    btn->resize(50,50);
    btn->move(60,60);
    resize(600,400);

    QPushButton *btn2 = new QPushButton("slfeofs",this);
    btn2->show();
    btn2->resize(80,30);
    btn2->move(100,100);
    this->zt = new Teacher(this);
    this->st = new Student(this);



   connect(btn2,SIGNAL(clicked()),zt,SIGNAL(hungry()));
   connect(zt,SIGNAL(hungry()),st,SLOT(treat()));
   connect(btn2,SIGNAL(clicked()),this,SLOT(close()));
   st->treat();

    setWindowTitle("sdawadwd");
    setFixedSize(600,400);



    //connect(st,SLOT(treat()));



}
void Widget::classIsOver(){

}
Widget::~Widget()
{

}

基于QT5的代码
#include "mainwindow.h"
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QPushButton *btn = new QPushButton("adsdadww ",this);
    btn->show();
    btn->resize(50,50);
    btn->move(60,60);
    resize(600,400);

    QPushButton *btn2 = new QPushButton("slfeofs",this);
    btn2->show();
    btn2->resize(30,30);
    btn2->move(100,100);




 connect(btn2,&QPushButton::clicked,this,&MainWindow::close);

    setWindowTitle("sdawadwd");
    setFixedSize(600,400);

}

MainWindow::~MainWindow()
{

}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT信号和槽 的相关文章

  • SWI-Prolog 与 C++ 接口的问题

    我试图让 SWI Prolog 与 C 很好地配合 现在束手无策 现在 在我开始准确解释我的问题是什么之前 我想首先说明我的项目是关于什么的以及我选择了哪些工具来开发解决方案 我的教授分配给我的任务是开发一个 GUI 程序 作为 SWI p
  • 我应该使用 QCoreApplication::processEvents() 还是 QApplication::processEvents()?

    我有一个从两者调用的方法QThreads和主线程 这个方法有时可能需要很长时间才能在循环中进行计算 所以我把QCoreApplication processEvents 这可以防止 GUI 冻结 在某个时刻我已经改变了QCoreApplic
  • 打开和关闭附加窗口 (QML)

    目前我有一个通过以下方式打开的窗口 property variant win Button id testButton MouseArea onClicked var component Qt createComponent test qm
  • Qt 人工鼠标点击无法正常工作

    小玩具应用程序可以在这里找到 http gist github com 517445 http gist github com 517445 我正在尝试将人工鼠标事件发送到小部件 我使用QApplication sendEvent为此 接下
  • 在 QtCreator 中使用 .pro 和 .pri 正确(树)显示 Qt 项目

    是否可以使用项目包含文件 pri 显示不止一个额外级别 例如如果 pro文件包括 pri文件包含两个 pri files pro pri pri pri 在 QtCreator 项目 中显示具有误导性 pro pri pri pri 它根本
  • QMutex 是否需要是静态的,以便此类实例的其他线程调用知道暂停其操作?

    从多个线程调用以下附加函数 我不希望数据重写附加 因为计数器尚未增加 除了当前使用 Append 的线程之外 这是否会挂起所有进入的线程 或者其他线程会继续运行而不追加数据吗 互斥锁是否需要是 静态 的 或者每个实例都知道要暂停操作吗 如果
  • QT:删除QGridLayout中QLabel之间的空格

    我将一些具有不同颜色的 QLabels 添加到 QGridLayout 作为 QWidget 的布局 现在我在每个 Qlabel 与下一个 Qlabel 之间有一个间距 我想将其删除 我尝试将标签的边距设置为 0 将 GridLayout
  • QMainWindow 上的 Qt 布局

    我设计了一个QMainWindow with QtCreator s设计师 它由默认的中央小部件 aQWidget 其中包含一个QVBoxLayout以及其中的所有其他小部件 现在我想要的一切就是QVBoxLayout自动占据整个中央小部件
  • C++ SQL 查询构建库

    我正在寻找一个提供与 c SelectQueryBuilder 库类似功能的 c 库 http www codeproject com Articles 13419 SelectQueryBuilder Building complex a
  • 如何去除QWizard中的水平线?

    我正在研究一个样式表QWizard我想删除按钮上方的水平线 我尝试递归浏览所有小部件并将其边框设置为无 但似乎没有任何小部件具有此边框 这是我的代码 可以找到完整的可构建示例here https gist github com ardeid
  • 如何在针对 Windows XP 的情况下使用 VS2012 构建 Qt 4/5?

    我正在尝试使用 Visual Studio 2012 构建 Qt 4 8 5 Qt 5 2 1 针对 Windows XP SDK v7 1a 使用 VS2102 编译时 源代码与 SDK v7 1a 存在各种不兼容性 因此无法开箱即用 这
  • PyQt4 QPalette 不工作

    btn QtGui QPushButton Button self palettes btn palette palettes setColor btn backgroundRole QtCore Qt green btn setPalet
  • 如何在 Qt 应用程序中嵌入 Python 解释器?

    有没有一种简单的方法可以将 Python 解释器嵌入到 Qt 应用程序中 如果可能的话 我希望有一个跨平台的解决方案 这就是目的PythonQt http pythonqt sourceforge net 它支持 Windows Linux
  • 针对初学者的 QT 商业许可证与非商业许可证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 QT 许可似乎非常反学习 因为据我所知 用它开发的任何东西都只能是商业的当且仅当 its entire开发是在使用商业许可证的情况下完成的
  • 如何将自定义 Qt 类型与 QML 信号一起使用?

    我在 Qt 5 2 qml 应用程序中创建了一个自定义类型 class Setting public QObject Q OBJECT Q PROPERTY QString key READ key WRITE setKey Q PROPE
  • 了解 Qt3D 创建的网格

    我创建了一个 Qt3D 网格 如下所示 Qt3DCore QEntity newEntity new Qt3DCore QEntity Qt3DExtras QConeMesh mesh new Qt3DExtras QConeMesh m
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • 即使我在单独的线程中运行,QT GUI 也会冻结

    我有一个小型聊天应用程序 其中使用 SQLite 数据库来存储所有对话 我注意到该应用程序随机冻结 然后我必须最小化和最大化它才能使其再次工作 我认为问题可能是 SQLite 选择 插入导致 gui 冻结 我决定尝试将所有 SQLite 方
  • 通过单击内部小部件而不是标题栏来移动窗口

    在 Windows 中 当我创建 QMainWindow 时 我可以通过单击标题栏并拖动它来在屏幕上移动它 在我的应用程序中 我使用隐藏了标题栏setWindowFlags Qt CustomizeWindowHint 我正在尝试使用小部件
  • Q风格所有权

    在 Qt 应用程序中使用样式时 我遇到了一个有趣的问题QStyle所有权 QStyle继承自QObject 通常接受QObject parent作为构造函数参数来管理其子级的生命周期 但QStyle的构造函数没有此构造函数参数 第一个问题

随机推荐

  • OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading “C:\ProgramData\Anaconda3\lib\site-packages\to

    完整报错OSError WinError 1455 页面文件太小 无法完成操作 Error loading C ProgramData Anaconda3 lib site packages torch lib shm dll or one
  • 为你精选107个本科软件工程专业的计算机毕业设计项目推荐

    当面对茫茫计算机毕业设计题目海洋 你是否感到无所适从 不知如何选出一个富有创新意义的题目 今天 我们将为大四的同学们分享一些毕业设计项目 希望能给你的毕业设计带来一些灵感 一 成品列表 以下所有springboot框架项目的源码博主已经打包
  • sql:mysql:截取某个字符 1.最后一次出现的之前的字符串 2.最后出现那次的之后的字符串

    截取某个字符最后一次出现 如 之前的字符串 示例字符串 我是 中国 人 select REVERSE 我是 中国 人 from dual 人 国中 是我 select INSTR REVERSE 我是 中国 人 1 from dual 2
  • [零刻]EQ12&EQ12Pro安装OpenWRT软路由教程

    OpenWRT系统安装 安装前准备 1 U盘一个 2 WePE写盘工具 3 Openwrt固件 4 Img镜像写盘工具 安装步骤 1 首先下载WePE写盘工具 制作一个PE系统安装环境 启动软件后 选择安装PE到U盘 2 插入U盘后 刷新一
  • jQuery 查找文本并高亮

    让我们来看一下如何使用 jQuery 去查找或搜索一段文本并高亮它 我是 jQuery 的忠实粉丝 喜欢它简介的语法 接下来让我演示一个示例 仅使用一行 jQuery 代码便可把搜索字段进行高亮
  • <HTML>简单登录页面代码

    这是一个简单的静态的html页面登录图片 之前写的 验证码方面没有搞懂 这里我重新参考了这里 但是部分功能还没有完善 仅供参考
  • 2023年全国硕士研究生入学统一考试英语(一)试题

    2023年全国硕士研究生入学统一考试英语 一 试题 Section I Use of Englis Directions Read the following text Choose the best word s for each num
  • 毕业论文找文献是个问题,我直接用python把全网文献爬了一遍,这波就很舒服

    文章目录 一 写在前面 二 准备工作 三 开始爬取 四 效果展示 一 写在前面 马上要毕业了兄弟们 毕业论文是个麻烦事 论文要的资料得一条一条去网上查看 那多浪费时间 咱直接写个爬虫 批量下载慢慢看 不舒服 二 准备工作 使用软件 Pyth
  • mysql char 和varchar的区别?

    char 和varchar的区别 1 char 一定会使用指定的空间 varchar是根据数据来定空间 2 char的插入数据效率理论上比varchar高 varchar是需要通过后面的记录数来计算 使用哪一种类型 如果确定数据一定是占指定
  • C++桌面端使用 zxing-cpp 和 opencv 生成二维码(带中间logo)

    一 环境工具准备 VS2019 Cmake zxing cpp 源代码 https gitee com asalmc zxing cpp opencv4 2 0 二 zxing cpp 编译 1 源码目录下新建build文件夹存放构建目录
  • EC20 配置DHCP客户端自动获取IP

    1 dnsmasq介绍 Dnsmasq为小型网络提供网络基础设施 DNS DHCP 路由器通告和网络引导 它被设计为轻量级且占用空间小 适用于资源受限的路由器和防火墙 它还被广泛用于智能手机和便携式热点的共享 并支持虚拟化框架中的虚拟网络
  • 特征训练、预测一致性管理工具:开源项目Feast

    在机器学习的流程大体可以分成模型训练和模型服务两个阶段 无论是训练和服务阶段 其实都需要进行特征工程相关的工作 这块的技术挑战就是如何保证训练和预测过程中使用的特征是一致的 这个问题困扰了很多机器学习从业者 比较典型的场景就是推荐场景 在推
  • phpstudy(小皮模板存在nginx解析漏洞)

    前言 好久没写文章了 最近比较忙 今天抽个空写点东西 phpstudy介绍 PhpStudy国内12年老牌公益软件 集安全 高效 功能与一体 已获得全球用户认可安装 运维也高效 支持一键LAMP LNMP 集群 监控 网站 数据库 FTP
  • IAR 软件激活步骤

    1 下载IAR软件 然后点击安装 一路NEXT 2 安装后激活 需要断网 3 打开IAR软件 在软件目录中点击help License manger 4 弹出IAR License manager界面 点击license offline a
  • 阿里云商标注册入口/查询/买卖/分类表/撤三/续展/驳回复审入口汇总一键直达

    阿里云商标服务包括商标注册申请 商标近似查询 商标买卖 商标分类表 商标撤三申请 商标续展申请 商标驳回复审 商标起名及商标管理后台等服务 阿里云百科汇总阿里云商标服务入口大全 本文长期更新阿里云商标注册各种链接地址 阿里云商标服务入口链接
  • matplotlib学习

    figure axes axis add subplot subplot figure包括axes figure是画板 axes是画板上的子图 figure 使用add subplot pyplot使用的是subplot生成一个figure
  • (理财八)普通必须掌握的理财方式----定投

    理财八 普通必须掌握的理财方式 定投 我们先要了解一种 一直会用到的 打理股权类产品的投资方式一一基金定投 基金定投不是一个产品 是打理账户用的方法 是未来讲到股票基金配置时候 买入频率的方法 这种方法是被验证确实能帮小白理财者挣到钱的方式
  • 计算机网络01之计算机网络分层结构

    计算机网络01 1 计算机网络分层结构 1 下层为上层提供服务 SDU数据单元 为完成用户所要求功能而应传送的数据 PCI协议控制单元 控制协议操作的信息 PDU协议数据单元 对等层次之间传送的数据单位 2 OSI 7层参考模型 OSI 7
  • 微分中值定理定义及几何意义

    微分中值定理定义及几何意义 1 罗尔定理 2 拉格朗日中值定理 3柯西中值定理 1 罗尔定理 如果函数f x 满足 1 在闭区间 a b 上连续 2 在开区间 a b 内可导 3 f a f b 则在 a b 内至少有一点 a b 使得f
  • QT信号和槽

    系列文章目录 提示 这里可以添加系列文章的所有文章的目录 目录需要自己手动添加 例如 第一章 Python 机器学习入门之pandas的使用 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一