qobject_cast & sender()

当某一个Object emit一个signal的时候,它就是一个sender,系统会记录下当前是谁emit出这个signal的,所以你在对应的slot里就可以通过sender()得到当前是谁invoke了你的slot,对应的是QObject->d->sender.

有可能多个Object的signal会连接到同一个signal(例如多个Button可能会connect到一个slot函数onClick()),因此这是就需要判断到底是哪个Object emit了这个signal,根据sender的不同来进行不同的处理

时间: 2024-08-24 06:23:54

qobject_cast & sender()的相关文章

Qt: 内建对话框(各种对话框都有了,且用到了qobject_cast解析sender的技术)

#include "BuiltinDialog.h" #include <QtGui/QTextEdit> #include <QtGui/QPushButton> #include <QtGui/QFileDialog> #include <QtGui/QFontDialog> #include <QtGui/QColorDialog> #include <QtGui/QPrintDialog> #include

qobject_cast用法

函数原型: T qobject_cast ( QObject * object ) 本方法返回object向下的转型T,如果转型不成功则返回0,如果传入的object本身就是0则返回0. 在使用时有两个限制: 1# T类型必须继承自QObject. 2# 在声明时必须有Q_OBJECT宏. 使用场景: 当某一个Object emit一个signal的时候,它就是一个sender,系统会记录下当前是谁emit出这个signal的, 所以你在对应的slot里就可以通过 sender()得到当前是谁i

WPF事件中的sender就是事件源

可以看到wpf中所有的事件都是这个格式: private void btnTest_Click(object sender, RoutedEventArgs e)  { Button btn = (Button)sender; btn.Content = "i am the soure contrl"; } 其中的sender 指的是事件源,也就是触发该事件的控件

双台服务器rsync同步报错(code 5) at main.c(1503) [sender=3.0.6]

环境:某某项目的代码机器70配置有双网卡:232.182.23.70(联通)61.10.45.70(电信) 另一台代码机器是沧州联通的代码机器102,配置单网卡:121.15.1.102(联通) rsync服务端服务器121.15.1.102上的配置文件rsyncd.conf 一开始/etc/rsyncd.conf 里面配置的允许ip:为61.10.45.70 [[email protected] tmp]# cat /etc/rsyncd.conf ##rsyncd.conf start##

传智播客--WPF基础视频学习--sender解释

sender是激发该事件的对象,如果用在Button的双击点击事件上的话,就是只当前点击的对象 用例子来说明一下,有两个Button控件,分别为1和2,同时绑定一个Button_Click事件 private void Button_Click(object sender, RoutedEventArgs e) { Button btn = (Button)sender; btn.Content = "你点击我了!!"; } 当点击第一个button1的时候,出现 当点击Button2

.net控件事件中的Sender

private void button2_Click(object sender, RoutedEventArgs e) { } 最近看WPF内容,回顾下.net大家天天都在用,却不是十分关注的一个对象----sender 问:sender到底是什么呢? 答:所有的服务器控件中事件都会有(可能说的太绝对,应该说大多会吧),sender指的是触发事件的控件. private void button2_Click(object sender, RoutedEventArgs e) { Button

storyboard 之 prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 方法的使用方法总结

在谈到storyboard时,我们多次强调, storyboard 解决的是页面之间的跳转问题. 一个颇为复杂的页面跳转,一旦使用了storyboard,就会四两拨千斤,你只需简单地拖拽,即可完成UIViewController 之间的跳转. 这里面有个神器,一个极为重要的method,它就是: - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 第一个参数是 segue, 第二个参数是 sender. 这里给

object sender, LinkLabelLinkClickedEventArgs e 参数解释

开始是一个LinkLabel 控件,LinkLabel 绑定了Clicke事件 LinkLabel Delete = new LinkLabel(); Delete.Text = "删除"; Delete.Tag="我是第"+i+"行"; //触发详情,删除的超链接事件Delete.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.Devic

关于delphi 中 Sender的学习

sender是 事件的触发者,我发现所有的组件的事件 基本上都是 传Sender. 示例效果图: 代码: 接着来,既然TButton是个类,且publish哪里有事件,我们也可以看看这个事件的原型.