今天有个大佬给我说了这个函数:

[protected] QObject *QObject::sender() const

简直阔怕:

感觉这个函数有点歪门邪道!

这里有个多线程中的警告,Qt::DirectConnection这个直接连接,我记得一般在对象与对象连接的时候才用,多线程中一般都采用Qt::QueuedConnection这种方式把。

下面给出一个简单的例子:

程序运行截图如下:

源码如下:

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
class QTimer;
QT_END_NAMESPACEnamespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();public slots:void timerTimeOut();private:Ui::Widget *ui;QTimer *m_timer[3];
};#endif // WIDGET_H

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
#include <QListWidgetItem>
#include <QDebug>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);for(int i=0;i<3;i++){m_timer[i]=new QTimer;connect(m_timer[i],SIGNAL(timeout()),this,SLOT(timerTimeOut()));}for(int i=0;i<3;i++){m_timer[i]->start(1000);}}Widget::~Widget()
{delete ui;
}void Widget::timerTimeOut()
{for(int i=0;i<10;i++){QListWidgetItem *item=new QListWidgetItem;item->setText("The object is 0x"+QString::number(uint(m_timer[i]),16));if(m_timer[i]==QObject::sender()){if(i==0){item->setTextColor(Qt::red);ui->listWidget->insertItem(0,item);}else if(i==1){item->setTextColor(Qt::blue);ui->listWidget->insertItem(0,item);}else{item->setTextColor(Qt::green);ui->listWidget->insertItem(0,item);}}}
}

Qt工作笔记-对*QObject::sender()的认识相关推荐

  1. Qt工作笔记-对QObject::connect函数进一步认识(重载)

    今天看了某大佬的代码,发现了QObject::connect这个函数很有意思 他有6个构造函数,以前我都只用了一个,现在基本上又会了一个,在此做下笔记,以后如果要用到相关知识,本人就可以直接查阅了 运 ...

  2. Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包

    原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...

  3. Qt工作笔记-对connect的第五个参数的研究

    本程序配合了QObject::sender,关于QObject::sender在下面这个链接中: https://blog.csdn.net/qq78442761/article/details/81 ...

  4. Qt工作笔记-Qt5新版信号与槽

    运行截图如下: 格式如下: [static] QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemb ...

  5. Qt工作笔记-undefined reference to `vtable for MyObject'及对moc文件的进一步理解

    源码如下: main.cpp #include <QApplication> #include <QObject> #include <QTextCodec>cla ...

  6. C/C++|Qt工作笔记-4种方法判断当前对象(类)名或标识(继承发,typeid法,元对象className()法,Q_CLASSINFO法)

    回想起3个月前,刚刚参加工作也做过类似的笔记,但只有2种方法,估计刚毕业没有什么墨水,经过3个月时间又多了2种方法: 这些方法都可用于RTTI 第一个方法是继承发(C++中很推荐用这个,感觉用这个结构 ...

  7. Qt工作笔记-Qt元对象系统解析【2合1】

    博文转载地址: https://blog.csdn.net/spwper/article/details/51332187 说Qt信号与槽是一个很好机制,不如说Qt的元对象系统很强大.这也是大家讲Qt ...

  8. Qt工作笔记-Qt5中中文编码方面的笔记

    目前在使用国内的数据库和实时库接口. 说句实话,国内的东西与国外的东西比,在用户体验和接口调用上比还是存在很大的距离. 个人喜欢用QString去存储数据.个人感觉QTL比STL开发起来要快点 这里有 ...

  9. Qt工作笔记-使用hiredis连接及查询Redis

    目录 基本概念 代码与实例 基本概念 前几天学了个java的,现在想搞个C++的,但在hiredis上发现了一个qt的.就准备直接用Qt来撸项目算了,毕竟Pro文件,比Makefile要好写多了,先来 ...

最新文章

  1. WordPress的varnish内存缓存方案
  2. t3 修改服务器配置,t3如何修改服务器地址
  3. [vue] 使用vue写一个tab切换
  4. 基于PaddleRec的用户点击率预测
  5. 微软的OneNote正在获得类似Win11风格的外观
  6. jq往字符串中插入_jq: dom-插入
  7. mouseChildren= false
  8. 【python笔记】:python面向对象实现学生管理系统
  9. Abseil之字符串连接
  10. 野外帐篷露营避难有感
  11. 为何吾博客周排名没有数字显示?
  12. 100条常用SQL语句
  13. 基于ThinkPHP6.0 - 宝塔搭建漫画CMS管理系统源码实测
  14. 百度网盘不限速下载10M/S
  15. 百度Unit 2.0平台学习理解
  16. 通过银行卡前缀判断归属
  17. 非视距成像:硬件设备总结
  18. 教你如何赚你的第一桶金 - 2048(包括源代码)
  19. HDOJ 4747 Mex
  20. 语音信号处理-概念(一):时域信号(横轴:时间;纵轴:幅值)、频谱图(横轴:频率;纵轴:幅值)--傅里叶变换-->时频谱图(语谱图/声谱图)【横轴:时间;纵轴:频率;颜色深浅:幅值】

热门文章

  1. 天天在做图表,其实你根本不懂数据可视化
  2. 均胜群英:PC+移动端数字化管理,两年降本7%,人均产值提高300%
  3. 101次从入门到放弃,终于找到一个数据分析利器!
  4. P8U8 IT这块出书门槛相对比较低
  5. 强烈的打击感jinbiguandan
  6. 拿起电话就开始给(飞鸽传书3.0)
  7. 作为一个女程序员,无奈!
  8. 没事聊聊C++局域网聊天软件
  9. 一个有关fstream类的bug
  10. 第一节:别出心裁的HTML5简介