Qt之信号连接,你Out了吗?
在遇到多信号问题的时候,你是否经常会连接多个槽函数呢?如果你的答案是绝对的,那么你已经Out很久了。多信号连接多个槽,实现不同的槽就在潜意识的加大程序的开销!那么为什么不去链接同一个槽呢?
connect(slider, &QSlider::valueChanged, spin_box, &QSpinBox::setValue);
QWidget
::
show
);
connect(push_button, &QPushlButton::clicked, this, &
QWidget
::
buttonClicked
);
push_button
); //断开push_button的所有连接
push_button, &QPushButton::clicked, this, &QWidget::show
); //断开此信号连接的槽
BUTTON_1, 10
));
push_button_2
->setObjectName(QString::number(
BUTTON_2
, 10
));
tool_button_1
->setObjectName(QString::number(
BUTTON_3
, 10
));
tool_button
_2
->setObjectName(QString::number(
BUTTON_4
, 10
));
MyWidget
::
changeButton
);
MyWidget
::changeButton);
tool_button
_2, &
QToolButton
::clicked, this, &
MyWidget
::
changeButton
);
MyWidget::
changeButton()
QToolButton *tool_button = qobject_cast<</span>QToolButton *>(object);
int index;
push_button
)
tool_button
)
QString object_name =
tool_button
->objectName();
BUTTON_1:
information = QString("clicked 1");
BUTTON_2:
information = QString("clicked 2");
BUTTON_3:
information = QString("clicked 3");
BUTTON_4:
information = QString("clicked 4");
information
);
setObjectName不是专门用来干这事的,也可以使用text进行区分或者其它方法,这里介绍的只是一种思路而已!
QSignalMapper
类可以简单的理解为
信号的翻译和转发器, 它可以把一个无参数的信号翻译成带
int
参数、
QString
参数、
QObject*
参数或者
QWidget*
参数的信号,并将之转发。
push_button_1,
&QPushButton::clicked, signal_mapper, &
QSignalMapper::map);
push_button_2,
&QPushButton::clicked, signal_mapper,
&
QSignalMapper::
map);
tool_button_1,
&QToolButton::clicked, signal_mapper,
&
QSignalMapper::
map);
tool_button_2,
&
QToolButton
::clicked, signal_mapper,
&
QSignalMapper::
map);
push_button_1,
QString::number(
BUTTON_1, 10
));
push_button_2,
QString::number(
BUTTON_2, 10
));
tool_button_1,
QString::number(
BUTTON_3, 10
));
tool_button_2,
QString::number(
BUTTON_4, 10
));
&
QSignalMapper::mapped, this,
&
MyWidget
::
changeButton);
MyWidget::
changeButton(
QString text
)
text
.toInt();
BUTTON_1:
information = QString("clicked 1");
BUTTON_2:
information = QString("clicked 2");
BUTTON_3:
information = QString("clicked 3");
BUTTON_4:
information = QString("clicked 4");
information
);
valueChanged信号发送时,并不是说
setValue一定会比
showValue先执行。
Qt之信号连接,你Out了吗?的更多相关文章
- PyQt(Python+Qt)学习随笔:调用disconnect进行信号连接断开时的信号签名与断开参数的匹配要求
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在使用信号调用disconnect()方法断开信号和槽的连接时,信号可以带签名也可不带签名,参数可以 ...
- qt中信号与槽机制
一. 简介 就我个人来理解,信号槽机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信号与槽来代替函数指针,使程序更安全简洁. 信号和槽机制是 Qt 的核心机制,可以让编程人员将互不 ...
- QT 的信号与槽
转载: QT 的信号与槽机制介绍 QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 ...
- C++11实现Qt的信号槽机制
概述 Qt的信号槽机制是Qt的核心机制,按钮点击的响应.线程间通信等都是通过信号槽来实现的,boost里也有信号槽,但和Qt提供的使用接口很不一样,本文主要是用C++11来实现一个简单的信号槽,该信号 ...
- QT的信号与槽机制介绍
信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗 ...
- Qt 的信号与槽机制介绍(10个要注意的问题)
QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT ...
- C++框架_之Qt的信号和槽的详解
C++_之Qt的信号和槽的详解 1.概述 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal ...
- Qt学习记录--02 Qt的信号槽机制介绍(含Qt5与Qt4的差异对比)
一 闲谈: 熟悉Window下编程的小伙伴们,对其消息机制并不陌生, 话说:一切皆消息.它可以很方便实现不同窗体之间的通信,然而MFC库将很多底层的消息都屏蔽了,尽管使用户更加方便.简易地处理消息,但 ...
- qt多线程信号槽传输方式
//简单介绍一下QT信号与槽的连接方式: //Qt::AutoConnection表示系统自动选择相应的连接方式,如果信号与槽在同一线程,就采用Qt::DirectConnection, //如 ...
随机推荐
- Poweroff – 很好很强大的定制关机工具
Poweroff – 很好很强大的定制关机工具 Poweroff 是一个用来管理电脑关机系统的小工具,支持定时,支持远程 作者开放源代码,有兴趣的同学可以尝试着制作一下汉化版本. 可以设定不同时间 ...
- MySQL和MsSQL实时自动同步---SyncNavigator 数据库同步软件
需要MySQL数据库支持的狐友们有福了,MySQL和MsSQL实时自动同步---SyncNavigator 数据库同步软件 使用SyncNavigator轻松实现数据库异地同步.断点续传.异构同步 ...
- Selenium2+Python自动化测试实战
本人在网上查找了很多做自动化的教程和实例,偶然的一个机会接触到了selenium,觉得非常好用.后来就在网上查阅各种selenium的教程,但是网上的东西真的是太多了,以至于很多东西参考完后无法系统的 ...
- GitHub与VS2013完成项目管理
https://github.com 程序员应该去注册一个账号的网站 1.创建一个仓库 登录你的github网站:找到新建一个仓库的入口 一些基本信息填写完毕后,点击创建,即可拥有一个仓库 2. 让V ...
- CSS 3层嵌套居中布局
<html> <head> <style type="text/css"> .root{ background-color: red; widt ...
- 存储过程中update,然后用sql%判断update是否成功的存储过程
--更新用户状态 PROCEDURE P_UPDATE_USER_STATUS ( v_SrcID IN NUMERIC, v_DstID IN NUMERIC, v_DstType IN NUMER ...
- ie浏览器下HTML上传控件input=file的美化
近期写东西用到了input=file这个按钮,给其添加背景,在其它浏览器上都可以正常的显示,可一到ie上便不听话了,完全没有添加上,显的很难看.今天在网上找到一方法,试过后感觉很好,终于把这个问题给解 ...
- Vector3.Dot 与Vector3.Cross
Vector3.Dot(点积) : 点积的计算方式为: a·b=|a|·|b|cos<a,b>; 其中<a,b>和<b,a> 夹角不分顺序; 物理学中点积用来计算 ...
- SQL Server 与 Entity Framework 级联删除
SQL Server 级联设置我就不多说了,网上很多教程. 我想提的是 cycles or multiple cascade paths 的问题. 简单的说如果你的级联设置不是一个树型,而是一个带有循 ...
- c++ string类型转换为char *类型
string 是c++标准库里面其中一个,封装了对字符串的操作 把string转换为char* 有3中方法: 1.data 如: string str="abc"; char *p ...