博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT中采用信号槽机制实现两个label切换图片的关联
阅读量:6241 次
发布时间:2019-06-22

本文共 1111 字,大约阅读时间需要 3 分钟。

昨晚想实现在两个不同的label同步切换图片,即点击其中一个label,切换其背景图片的同时另一个label的背景图片也切换成一样的,点击另一个亦然。

刚开始只是考虑到切换了,却没有考虑到同步,所以没搞定。

显然容易想到的是信号槽机制,建立连接这两个label的信号槽,传递QPixmap的参数,槽函数在接收到signal的同时设置另一个label的背景为传来的QPixmap参数。

下面说下我的具体实现过程:

假设现在要实现同步切换背景图片的两个label是label_1,label_2。

定义signals:

void clicked_label1(QPixmap pixmap);

void clicked_label2(QPixmap pixmap);

定义槽函数:

void label1Clicked(QPixmap pixmap);

void label2Clicked(QPixmap pixmap);

具体实现

void label1Clicked(QPixmap pixmap){

label_2->setQPixmap(QPixmap(pixmap));

}

void void label2Clicked(QPixmap pixmap){

label_1->setQPixmap(QPixmap(pixmap));

}

在点击label1的槽函数里面,加上

emit clicked_label1(QPixmap("图片路径"));

点击label2的槽函数里面,加上

emit clicked_label2(QPixmap("图片路径"));

然后在构造函数里面,定义连接

connect(this,SIGNAL(clicked_label1(QPixmap)),this,SLOT(label1Clicked((QPixmap)));
connect(this,SIGNAL(clicked_label2(QPixmap)),this,SLOT(label2Clicked((QPixmap)));

几点注意:

在设置mousePressEvent的时候,在点击label所在区域的时候发出点击label的signal,而且label->setMouseTracking(true);不要忘了,否则的话鼠标滑到label上了就无法监听了。

发出signal的时候,记得一定要带QPixmap参数,QPixmap必须是自己这次设置的背景图。

OK,over。

转载于:https://www.cnblogs.com/Podevor/archive/2011/10/15/2788014.html

你可能感兴趣的文章
每天一个新标签/方法/属性/兼容性/问题
查看>>
《Linux内核设计与实现》读书笔记(九)- 内核同步介绍
查看>>
Delphi-IOCP 共同学习研究群号 320641073
查看>>
sql2008中已存在已有数据表修改主键为自增不让更改的解决方案
查看>>
控件路径自定义控件遇到的两个小问题
查看>>
【BZOJ】2648: SJY摆棋子 & 2716: [Violet 3]天使玩偶(kdtree)
查看>>
数据仓库与数据挖掘的一些基本概念
查看>>
Android学习系列(23)--App主界面实现
查看>>
jquery validate的漂亮css样式验证
查看>>
OAF_解决OAF与Windows版本不兼容黑屏
查看>>
如何让编码更加的标准
查看>>
阿里云收集服务器性能指标的python脚本
查看>>
Docker源码分析(一):Docker架构
查看>>
Android开发之在子线程中使用Toast
查看>>
(第三天)函数
查看>>
Git 学习笔记--Git下的冲突解决
查看>>
poj 2955 Brackets(区间dp)
查看>>
jQuery选中该复选框来实现/全部取消/未选定/获得的选定值
查看>>
武汉Uber优步司机奖励政策(8月31日~9月6日)
查看>>
javascript小技巧:同步服务器时间、同步倒计时
查看>>