Qt工作笔记-对*QObject::sender()的认识
今天有个大佬给我说了这个函数:
[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()的认识相关推荐
- Qt工作笔记-对QObject::connect函数进一步认识(重载)
今天看了某大佬的代码,发现了QObject::connect这个函数很有意思 他有6个构造函数,以前我都只用了一个,现在基本上又会了一个,在此做下笔记,以后如果要用到相关知识,本人就可以直接查阅了 运 ...
- Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包
原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...
- Qt工作笔记-对connect的第五个参数的研究
本程序配合了QObject::sender,关于QObject::sender在下面这个链接中: https://blog.csdn.net/qq78442761/article/details/81 ...
- Qt工作笔记-Qt5新版信号与槽
运行截图如下: 格式如下: [static] QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemb ...
- Qt工作笔记-undefined reference to `vtable for MyObject'及对moc文件的进一步理解
源码如下: main.cpp #include <QApplication> #include <QObject> #include <QTextCodec>cla ...
- C/C++|Qt工作笔记-4种方法判断当前对象(类)名或标识(继承发,typeid法,元对象className()法,Q_CLASSINFO法)
回想起3个月前,刚刚参加工作也做过类似的笔记,但只有2种方法,估计刚毕业没有什么墨水,经过3个月时间又多了2种方法: 这些方法都可用于RTTI 第一个方法是继承发(C++中很推荐用这个,感觉用这个结构 ...
- Qt工作笔记-Qt元对象系统解析【2合1】
博文转载地址: https://blog.csdn.net/spwper/article/details/51332187 说Qt信号与槽是一个很好机制,不如说Qt的元对象系统很强大.这也是大家讲Qt ...
- Qt工作笔记-Qt5中中文编码方面的笔记
目前在使用国内的数据库和实时库接口. 说句实话,国内的东西与国外的东西比,在用户体验和接口调用上比还是存在很大的距离. 个人喜欢用QString去存储数据.个人感觉QTL比STL开发起来要快点 这里有 ...
- Qt工作笔记-使用hiredis连接及查询Redis
目录 基本概念 代码与实例 基本概念 前几天学了个java的,现在想搞个C++的,但在hiredis上发现了一个qt的.就准备直接用Qt来撸项目算了,毕竟Pro文件,比Makefile要好写多了,先来 ...
最新文章
- WordPress的varnish内存缓存方案
- t3 修改服务器配置,t3如何修改服务器地址
- [vue] 使用vue写一个tab切换
- 基于PaddleRec的用户点击率预测
- 微软的OneNote正在获得类似Win11风格的外观
- jq往字符串中插入_jq: dom-插入
- mouseChildren= false
- 【python笔记】:python面向对象实现学生管理系统
- Abseil之字符串连接
- 野外帐篷露营避难有感
- 为何吾博客周排名没有数字显示?
- 100条常用SQL语句
- 基于ThinkPHP6.0 - 宝塔搭建漫画CMS管理系统源码实测
- 百度网盘不限速下载10M/S
- 百度Unit 2.0平台学习理解
- 通过银行卡前缀判断归属
- 非视距成像:硬件设备总结
- 教你如何赚你的第一桶金 - 2048(包括源代码)
- HDOJ 4747 Mex
- 语音信号处理-概念(一):时域信号(横轴:时间;纵轴:幅值)、频谱图(横轴:频率;纵轴:幅值)--傅里叶变换-->时频谱图(语谱图/声谱图)【横轴:时间;纵轴:频率;颜色深浅:幅值】