Qt学习笔记 信号和槽
槽和普通c++成员函数一样只可以为虚函数,也可以被重用,可以是公有的也可以是私有的,也可以被其它的c++函数调用;
参数也是任意的
唯一不同的是本槽和信号是可以连在一起的,和c#的事件差不多。相连后每当发射这个信号后就会自动调用这个槽
connection(sender,SIGNAL(signal),receiver,SLOT(slot));
sender就发送信号的Qobject指针
receiver是槽的Qobject指针
signal和slot是只有形参的函数名。SIGNAL和SLOT宏会把它们的参数转换为相应的字符串
1.一个信号可以连接多个槽
在发射信号的时候顺序不确定
.h
private slots:
void Open1();
void Open2();
.app
myQt::myQt(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QObject::connect(ui.btn_Open,SIGNAL(clicked()),this,SLOT(Open1()));
QObject::connect(ui.btn_Open,SIGNAL(clicked()),this,SLOT(Open2()));
} void myQt::Open1()
{
QMessageBox msg;
msg.setText("Open1!");
msg.exec();
}
void myQt::Open2()
{
QMessageBox msg;
msg.setText("Open2!");
msg.exec();
}
2.多个信号可以连接同一个槽
QObject::connect(ui.btn_Open,SIGNAL(clicked()),this,SLOT(Open1()));
QObject::connect(ui.btn_ClickBool,SIGNAL(clicked()),this,SLOT(Open1()));
3.一个信号可以与另外一个信号相连
QObject::connect(ui.btn_Open,SIGNAL(clicked()),ui.btn_ClickBool,SLOT(click()));
4连接可以被删除
删除所有的连接
QObject::disconnect(ui.btn_Open,,,);
//或者
ui.btn_Open->disconnect();
删除指定的连接
QObject::disconnect(ui.btn_Open,SIGNAL(clicked()),,);
//或者
ui.btn_Open->disconnect(SIGNAL(clicked()));
删除两个关联对象的连接
QObject::disconnect(ui.btn_Open,,ui.btn_ClickBool,);
//或者
ui.btn_Open->disconnect(ui.btn_ClickBool);
要把信号成功的连接到槽(或者是连接到另外一个信号),它们的参数必须具有相同的顺序和相同的类型。
这里有个例外,如果信号的参数比它所连接的槽的参数多,那么多余的参数将会被忽略
Qt学习笔记 信号和槽的更多相关文章
- Qt学习笔记----信号与槽实现的四种方式
1.以按钮为例,首先添加一个按钮,对象名为pushButton,在按钮是右键单击选择“转到槽”即可,在转到槽选择面板(右图)里面选择需要进行的操作,比如单击clicked() 2.选择菜单“编辑”,找 ...
- Qt学习之信号与槽(一)
Qt学习之信号与槽(一) 目录 QT的信号与槽机制 在窗口的UI设计中操作添加信号和槽 QT的信号与槽机制 QT的两种机制 在Qt和PyQt中有两种通信机制: 低级事件处理机制(low-l ...
- qt学习:信号,槽
[C.GUI.Qt.4编程(第二版)](加)布兰切特,(英)萨默菲尔德.扫描版[学习库www.xuexi111.com].pdf 信号和槽是Qt编程的基础,它可以让各种对象联系在一起. 1. 使用co ...
- 【QT学习】信号和槽机制
QT中发射信号使用 emit 来完成. 类要使用信号和槽机制,必须从QObject或者QObject子类继承.必须在类的定义中加上 Q_OBJECT 宏. 信号和槽连接时,参数类型必须相同. 关键字大 ...
- qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果
应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...
- Qt学习笔记-Widget布局管理
Qt学习笔记4-Widget布局管理 以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...
- QT学习笔记(一)——Helloworld
QT学习笔记(一)--Helloworld 一.调试的基本方法: Log调试法 --在代码中加入一定的打印语句 --打印程序状态和关键变量的值 断点调试法: --在开发环境中的对应代码行加上断点 -- ...
- Qt学习笔记-了解信号与槽-自定义信号-自定义槽
信号与槽是连接不同控件直接的渠道. 这里以Horizontal Slider和Dial两个控件举例. 目的是在改变滑条的数值时,Dial也随之响应. 首先添加两个控件. 然后按快捷键F4进入控件编辑模 ...
- qt学习笔记
Part 1基本思路 学习目标:(熟练)使用 qt 制作符合要求的 ui FAQ:1)学习Qt5还是Qt4? 重要的是学习的方法而不是内容,掌握了正确的学习方法就可以很快完成另一者的学习,综合来看,Q ...
随机推荐
- Linux账号密码过期会导致crontab作业不能执行
今天一同事报告Linux服务器上的crontab作业没有运行,检查/var/log/cron日志后发现下面错误信息 Jan 19 16:30:01 xxxx crond[31399]: Authent ...
- Javascript之旅——第六站:看看writable特性
说起js中的那些特性标记,总觉得有些怪怪的,那为什么要说到这个attribute,起源于对一个问题的疑问,我们都知道window对象其实就是 浏览器窗口的一个实例,既然是一个实例,那这个实例就应该有“ ...
- 使用JUnit4测试Spring
测试DAO import static org.junit.Assert.*; import org.junit.Before; import org.junit.Ignore; import org ...
- Nginx问题定位之监控进程异常退出
nginx在运行过程中是否稳定,是否有异常退出过?这里总结几项平时会用到的小技巧. 1. 在error.log中查看是否有signal项,如果有,看看signal是多少. 比如,这是一个异常退出的情况 ...
- IO系统性能之一:衡量性能的几个指标
作为一个数据库管理员,关注系统的性能是日常最重要的工作之一,而在所关注的各方面的性能只能IO性能却是最令人头痛的一块,面对着各种生涩的参数和令人眼花缭乱的新奇的术语,再加上存储厂商的忽悠,总是让我们有 ...
- net-snmp添加自定义MIB
我所知道的添加自定义MIB的方法有三种 1.静态加载,将生成的.c和.h文件加入到相应的位置,重新编译snmp库,优点是不需要修改配置文件,缺点是每次添加都得重新编译: 2.动态加载,将生成的.c ...
- Linux磁盘管理之实现多文件系统及VFS06
待续 Linux如何支持多文件系统 不同磁盘需要不同类型的磁盘驱动程序,驱动向上提供接口,不同驱动提供的接口格式不同,在上层是块设备层,用来屏蔽下边驱动接口的差别,向上统一提供,把所有硬盘当成块设备, ...
- git pull
今天在服务器上git pull是出现以下错误: error: Your local changes to the following files would be overwritten by mer ...
- 【转】Android编程判断手机or平板
转载自:http://www.cnblogs.com/sunzn/p/3663363.html /** * 判断当前设备是手机还是平板,代码来自 Google I/O App for Android ...
- WPF自定义空心文字
首先创建一个自定义控件,继承自FrameworkElement,“Generic.xaml”中可以不添加样式. 要自定义空心文字,要用到绘制格式化文本FormattedText类.FormattedT ...