C++学习笔记day51-----Qt-信号,槽

Qt QDialog详解、自定义QMessageBox 一、简介 1、Qt中使用QDialog来实现对话框,QDialog继承自QWidget,对话框分为两种,一种是模态对话框、 另一种是非模态对话框。即阻塞和非阻塞对话框,而模态对话框又有两种:应用程序级别的和窗口级别的,分别指完成对话框之前阻塞整个应用和阻塞关联窗口。exec() 和 open() 分别为应用程序级别和窗口级别的模态对话框,show()则为非模态对话框。 1. QDialog::show(): 非模态,非阻塞的。 2. QDialog::exec(): 模态 ,阻塞,整个系统阻塞掉。 3. 阅读详情

信号,槽
Qt中的对标准C++语法进行了扩展-信号,槽。
用于对象之间的交互。可以说是Qt事件模式的基础。
可以将一个对象的信号函数和另一个对象的槽绑定。
当一个对象收到一个事件之后,通过信号函数将必要的信息传递给与其绑定的对象的槽函数。

面向对象的Qt编程
Qt含有大量的类,这些类在很大程度上提高了开发的效率。只有使用面向对象的编程方法,才能物尽其用。

总的来说,Qt的开发,就是看文档,了解的越多,思路也就越多。
———————————-
今天:
一、信号和槽
1、概念
信号和槽是QT自定义一种通信机制,实现对象之间的数据交换。

2、定义
1) 信号函数:
class XX:public Qobbjent{
Q_OBJECT=T//元对象编译器moc
signals:
void sigfunc(…)//信号函数

};
注:信号函数,只需要beject生命,不能定义

2) 槽
class XX:puiblic QObject{
Q_OBJECT
public slots:
void slotfunc();
};
注:槽函数可以连接到其他对象的信号上,当信号被发送时,槽函数将被自动执行。
注:槽函数也可以当作不同成员函数来使用

3、信号和槽的连接
QMetaObject::Connection connect(
const QObject * sender,
const char * signal,
const QObject * receiver,
const char * method,
Qt::ConnectionType type = Qt::AutoConnection)
sender:信号发送的对象(任何QObject子类都可以)
signal:要发送的信号函数
//把信号函数转换成const char*
SIGNAL(信号函数名(参数表));
receiver:信号的接受对象
method:接受对象要执行的槽函数
//把一个槽函数返回值转换为const char*
SLOT(槽函数函数名(参数表));

创建一个Qt的应用程序,包含一个标签和一个按钮,实现点击按钮关闭标签的功能。

4、信号和槽连接的语法要求
1) 信号和槽参数要一致
QObject::connect(A,SIGNAL(sigfun(int)),B,SLOT(slotfun(int)));//ok
QObject::connect(A,SIGNAL(sigfun(void)),B,SLOT(slotfun(int)));//error

2) 可以带有缺省参数
QObject::connect(A,SIGNAL(sigfun(void)),B,SLOT(slotfun(int=0)));//ok

3) 信号函数参数可以比槽函数多,多余将被忽略
QObject::connect(A,SIGNAL(sigfun(int,int)),B,SLOT(slotfun(int)));//ok

4) 一个信号可以被连接到多个槽函数(一对多)
QObject::connect(A,SIGNAL(sigfun(int,int)),B1,SLOT(slotfun1(int)));//ok
QObject::connect(A,SIGNAL(sigfun(int,int)),B2,SLOT(slotfun2(int)));//ok
注:当A发送信号时,B1,B2的槽函数都会被执行,但是执行的顺序是不确定的。

5) 多个信号可以连接到一个槽函数(多对一)
QObject::connect(A1,SIGNAL(sigfun1(int,int)),B,SLOT(slotfun(int)));//ok
QObject::connect(A2,SIGNAL(sigfun2(int,int)),B,SLOT(slotfun(int)));//ok
注:无论A1还是A2发送信号后,B的槽函数都会被执行。

6) 信号级联,两个信号函数可以直接连接
QObject::connect(A,SIGNAL(sigfun1(int,int)),B,SLOT(sigfun2(int)));//ok

1) 滑块(Qslider)
QSlider(垂直/水平,父窗口);
void setRange(int min,int max);

signal:
void valueChanged(int value)
void setValue(int calue)

2) 选值框(QSpinBox)
QSpinBox(父窗口)
void SetRange(int min,int max);
signal
void valueChanged(int value);

二、面向对象的Qt编程
1) 基于对象的Qt编程//不推荐

2) 面向对象的Qt编程
<计算器>

[pcie]gen6 下 L0p 000b~100b: 触发L0p 操作流程协商工作link width 到target link width.为111b:link width 硬件动态调整。硬件动态:Device control 3 register.target link width=111b当pcie链路检测到空闲状态时,设备可以主动进入L0p状态。L0p 是pcie gen6 新引入的链路状态,是L0的子状态。(5)LINK WIDTH:当LINK WIDTH CHANGE.cmd为Request时表示请求的链路宽度。 阅读详情

相关推荐

树莓派4B+DroneKit实战:手把手教你用Python控制无人机飞行(附避坑指南)

本文提供了一份详尽的树莓派4B与DroneKit配置实战指南,涵盖从硬件选型、软件环境搭建到Python编程控制无人机的完整流程。文章重点解决了ARM架构下的兼容性问题、MAVLink通信配置及端口管理等常见难题,并附带了实用的避坑指南和代码示例,帮助开发者构建稳定可靠的无人机控制系统。

weixin_29056781的博客 410

QT信号槽

信号槽是Qt中特有的概念。它使得程序员将不同的object绑定起来,而object对象间并不需要对相互了解。 Slots也是普通的c++方法,它们可以是virtual;可以被重载;可以使private、protected、public,可以像其它c++方法一样有各种类型的参数,Signals则无这些属性。它们唯一的区别就是signal与slot是相互链接起来的,slot函数在每次signal函数被

鸟语的专栏 6608

飞塔防火墙CVE-2022-40684漏洞复现:手把手教你搭建靶场环境(附调试技巧)

本文详细指导如何搭建Fortinet飞塔防火墙CVE-2022-40684认证绕过漏洞的靶场环境,涵盖虚拟机部署、网络配置、调试模式开启及漏洞原理分析。通过手把手教程,读者可掌握漏洞复现与深度调试技巧,深入理解该认证绕过漏洞的利用与防御。

h6i7j8的博客 695

QT-串口助手1--- C++基础语法部分1

新建工程后先看下简单代码 学习下C++语法 参考:https://jingyan.baidu.com/article/72ee561a5a644ce16138df37.html mainwindows.h中 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QSerialPort> //提供访问串口的功能 #include <QSerial..

Paul_Yu_Zhang的博客 519

强化学习:Distributed PPO (DPPO) 学习笔记

DPPO = Distributed + Proximal Policy Optimization Distributed:多个智能体并行训练 Proximal:限制策略更新幅度,确保稳定性 Policy Optimization:基于策略梯度的优化方法 核心思想:多个智能体并行探索环境,共享经验,通过裁剪策略更新确保训练稳定

只是个人学习笔记 1331

【华为鸿蒙3.0/荣耀安卓12使用VMOS Pro的激活方式】

解压激活工具 →连接数据线 轻松搞定激活!

Amy_mumu的博客 142万+

C++:信号与槽

信号与槽

逃离那片云的博客 2284

STM32的GPS数据提取程序设计说明——基于NMEA0183协议

一、硬软件平台 本次程序实现效果为对GPS信号穿送来的数据进行筛选,并将筛选后的信息通过上位机显示出来,所以此次设计所需硬件包括STM32F407、RS232转TTL、CH340USB转串口模块,注意该模块在使用前,对应的系统需要安装驱动,否则串口调试助手无法识别,另外还包括JLink下载器。 本次代码设计软件为KEIL5并结合F4固件包,上位机系统为WIN7,主机系统为WIN10。 二、算法总体思路设计 由于GPS通过RS232将数据传送给板子,因此使用两个串口资源(串口1和串口2),其中一个用来

小景的博客 6181

《十二》Qt各种对话框之FileDialog文件对话框及QMessageBox 消息对话框

defaultButton 是缺省选择的按钮,缺省表示没有选择。选择己有目录可调用静态函数 QFileDialog::getExistingDirectory(),同样,若需要传递对话框标题和初始路径,还应传递一个选项,一般用 QFileDialog::ShowDirsOnly,表示对话框中只显示目录。QMessageBox::question() 函数用于打开一个选择对话框,提示信息,并提供 Yes、No、OK、Cancel 等按钮,用户单击某个按钮返回选择,如常见的文件保存确认对话框如图所示。

ayf9999的博客 1967

地表最强之Android微信语音/腾讯会议通话录音

地表最强之Android微信语音/腾讯会议通话录音

cczhengv 6104

编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char)

/* *Copyright (c) 2016, 烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作者:张旺华 *完成日期: 2016 年 7 月 1 日 *版本号:v1.0 *问题描述:编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char) * */ #include #include #include

张旺华的博客 1万+

第51篇 Qt 5.5全新的开始

在写这本书的同时,想了很多,也有很多好的东西想和大家分享,但是还是因为精力有限......再比如说为《Qt Creator快速入门》编写了实验讲义和PPT课件,完成这个的时候,我对该书第三版已经有了大致的思路,也本想早早和大家探讨,但还是因为精力有限......再有就是和天嵌科技合作的嵌入式教程,这个也是和hzzhou合作的教程,年初的时候用三个月跟hzzhou合作开发了一个小项目,这次再次合作,将探索Linux嵌入式编程教程的编写。时间转眼而逝,看一下上次发的教程,已经是一年前的事情了。

林中静月下仙的博客 2005

电脑硬件:电脑主板上的接口介绍,看完你就懂了

它们主要用于连接老式的键盘和鼠标,虽然速度和兼容性不如USB接口,但在某些特定场合依然发挥着重要作用。PCIe接口是主板上的扩展能力象征,可以连接各种扩展卡,如显卡、声卡、网卡等。电脑主板作为电脑硬件组成关键的部分,今天给大家分享一下电脑主板上有哪些接口,具体每一个接口的特点、使用场景,有需要的朋友可以来了解一下!它们不仅能连接鼠标、键盘、U盘、打印机,还能连接各种外设,如移动硬盘、游戏手柄等。:虽然现在用得越来越少,但在一些特定场合,如工业控制、老旧设备上,仍然需要使用PS/2接口。

IT技术分享社区 2787

[Qt教程] 第51篇 从Qt 4到Qt 5(一)Qt 5.2安装、程序迁移和发布

该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处! 转载自:

zyx_linux的专栏 2428

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

qt, connect参数,Qt::DirectConnection,Qt::QueuedConnection

connect用于连接qt的信号和槽,在qt编程过程中不可或缺。它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置。 Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定。如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型。如果接收者和发送者不在一个线程,则自动使用Qt::QueuedConnec

life_is_too_hard的博客 4万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Qt 信号与槽的各种连接方式

作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 简介 信号槽是 Qt 框架引以为豪的机制之一。当用户触发某个事件时,就会发出一个信号(signal),这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会连接(connect)绑定一个函数(称为槽slot)来处理这个信号。也就是说当信号发出时,被连接的槽函数会自动被回调。这有点类似与开发模式中的观察者模式,即当发生了感兴趣的事件,某一个操作就会被自动触发 信号和槽是Qt特有的信息传输机制,是Qt设计

billy的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Qt 槽机制:public slots 和 private slots

今天在写Qt图片浏览器的时候,遇到了一个问题,Qt的界面是对的,但是功能却怎么也实现不了(点击开始按钮,无法显示打开文件夹的对话框),开始以为是信号连接或者是函数写错了,检查了好久都不知道问题在哪,最后,对着书上的代码一行行研究,才发现问题在这个地方: class MainWindow : public QMainWindow { Q_OBJECT public: MainWindo

NCTU_to_prove_safety的博客 3万+

【C++学习笔记(五十一)】之Qt中的信号和槽机制

一.信号和槽机制         信号和槽机制分为信号和槽函数,用于处理事件。当某个事件发生时,比如说某个按钮被点击后,它就会发出一个信号(signal),如果有对象对这个信号感兴趣,那么它就会使用连接(connect)函数,将该信号与自己的一个槽函数(slot)连接起来,槽函数被调用。槽函数负责点击按钮后的处理实现。 二,系统自带的信号和槽函数 (一)connect函数         connect函数连接信号

开发小鸽 881

QT中信号函数的理解

先是百度知道里的对话: 问 看到QT帮助中和一些文档知道,qt 的信号函数并没有函数体,如果没有函数体,如何知道触发了哪个connect函数,也看到好多的信号函数的声明里面的参数只是一个int或者两个int,并没有变量名,那如果这个对象的信号触发了槽函数,那么,该信号传递给槽函数的参数又是什么呢? 那个就叫信号,不是信号函数,也不能有函数体。

蓝松SDK 5157

Qt中QMessageBox中的几种常见用法归纳

Qt中QMessageBox中的几种常见用法归纳 最简单的弹出一个提示框 QMessageBox::question(this,"Title","Content"); QMessageBox::warning(this,"Title","Content"); QMessageBox::information(this,"Title","Content&q

zjx1230的博客 4267

实现QT与HTML页面通信

1.前言 最近,C++和WEB本地混合应用开发模式逐渐流行起来,个人也认为标记语言描述的界面是界面开发的一个发展趋势。WPF、JavaFX,当然也少不了Html。基于Html的界面在开发效率,可移植性上都十分有优势,所以也被很多 目前QT官方的文档中对如何从原来的WebKit迁移至QtWebEngine没有提供足够丰富的文档和指导。 本文记录一些从WebKit迁移至QtWebEngi

hou_jiangzhen的博客 5582

QT中调用MessageBox的三种方法

1.QMessageBox::information(this,"Title",QString::number(result));2.QMessageBox::warning(this,"Title","Error Message");3.QMessageBox box; box.setText("Another ways to use MessageBox"); box.exec();

k先森的博客 1万+

QT笔记(8)——Qt与51单片机串口通讯

工业控制中单片机与pc机通讯,常常通过串口通讯来完成,本次基于RS232通讯来完成的,硬件是普中的STC51单片机开发板;板子如下图: 不需要液晶显示器,自带的例子这里就不贴了,主要实验是Qt进行串口链接,发送数据,单片机判断发送的内容并做出反馈; 单片机程序是c语言写的,用keil编译,再下载到开发板上的,单片的程序如下: #include&lt;reg51.h&gt; //--声明...

abcvincent的博客 1万+

c++类中public,private,protected的用法与区别

1、public修饰的成员变量 在程序的任何地方都可以被访问,就是公共变量的意思,不需要通过成员函数就可以由类的实例直接访问 2、private修饰的成员变量 只有类内可直接访问,私有的,类的实例要通过成员函数才可以访问,这个可以起到信息隐藏 3、protected是受保护变量 类内和子类可直接访问,也就是说,基类中有protected成员,子类继承于基类,那么也可以访问基类的protected成...

Alexin_lza的博客 5462

C++学习笔记day52-----Qt-designer、qtcreator

designer、qtcreator

displayMessage的博客 3092

Qt学习之路(17): Qt标准对话框之QMessageBox

好久没有更新博客,主要是公司里面还在验收一些东西,所以没有及时更新。而且也在写一个基于Qt的画图程序,基本上类似于PS的东西,主要用到的是Qt Graphics View Framework。好了,现在还是继续来说说Qt的标准对话框吧! 这次来说一下QMessageBox以及类似的几种对话框。其实,我们已经用过QMessageBox了,就在之前的几个程序中。不过,当时...

weixin_33919950的博客 4242
上一篇: C++学习笔记day49-----C++98-异常处理
下一篇: C++学习笔记day52-----Qt-designer、qtcreator
displayMessage
博客等级 码龄11年 34粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值