在Qt的开发过程中,信号带参数是很常见的,在使用带参数的信号槽时,有以下几点需要注意。
- 当信号和槽函数的参数数量相同时,它们的参数类型要完全一致。
信号和槽函数的声明:
signals:
void iSignal(int b);
void strSignal(QString str);
public slots:
void iSlots(int b);
void strSlots(QString str);
信号和槽函数的绑定:
connect(this,SIGNAL(iSignal(int)),
this,SLOT(iSlots(int)));
connect(this,SIGNAL(strSignal(QString)),
this,SLOT(strSlots(QString)));
发射信号:
emit iSignal(5);
emit strSignal("hello word");
槽函数的实现:
void MainWindow::iSlots(int b)
{
qDebug() << "b = " << b;
}
void MainWindow::strSlots(QString str)
{
qDebug() << str;
}
- 当信号的参数与槽函数的参数数量不同时,只能是信号的参数数量多于槽函数的参数数量,且前面相同数量的参数类型应一致,信号中多余的参数会被忽略。
信号:
void iSignal(int b,int a);
响应信号的槽函数:
void MainWindow::iSlots(int b)
{
qDebug() << "b = " << b;
}
- 在不进行参数传递时,信号槽绑定也是要求信号的参数数量大于等于槽函数的参数数量,这种情况一般是一个带参数的信号去绑定一个无参数的槽函数。
信号:
void iSignal(int b,int a);
响应信号的槽函数:
void iSlots();
信号和槽函数的绑定:
connect(this,SIGNAL(iSignal(int,int)),
this,SLOT(iSlots()));
- 参考资料:
1 http://blog.csdn.net/lyc_daniel/article/details/12047819 《信号槽如何传递参数(或带参数的信号槽)》
Qt带参数的信号和槽的更多相关文章
-
Qt 信号槽如何传递参数(或带参数的信号槽)
信号槽如何传递参数(或带参数的信号槽) 利用Qt进行程序开发时,有时需要信号槽来完成参数传递.带参数的信号槽在使用时,有几点需要注意的地 ...
-
第七章 探秘Qt的核心机制-信号与槽
第七章 探秘Qt的核心机制-信号与槽 注:要想使用Qt的核心机制信号与槽,就必须在类的私有数据区声明Q_OBJECT宏,然后会有moc编译器负责读取这个宏进行代码转化,从而使Qt这个特有的机制得到使用 ...
-
Qt Quick 事件处理之信号与槽(foruok的博客)
前面两篇文章<QML 语言基础>和<Qt Quick 简单教程>中我们介绍了 QML 语言的基本语法和 Qt Quick 的常见元素,亲们,通过这两篇文章,您应该已经可以完成简 ...
-
Qt Quick 事件处理之信号与槽
前面两篇文章<QML 语言基础>和<Qt Quick 简单教程>中我们介绍了 QML 语言的基本的语法和 Qt Quick 的常见元素,亲们,通过这两篇文章,您应该已经能够完毕 ...
-
2.QT-窗口组件(QWidget),QT坐标系统,初探消息处理(信号与槽)
本章主要内容如下: 1) 窗口组件(QWidget) 2) QT坐标系统 3) 消息处理(信号与槽) 窗口组件(QWidget) 介绍 Qt以组件对象的方式构建图形用户界面 Qt中没有父组件的*组件 ...
-
Qt对象模型之一:信号和槽
一.信号和槽机制概述 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal).这种发出是没有目 ...
-
PyQt Designer中带参数的信号为什么匹配不到带参数的槽函数?
老猿在学习ListView组件时,想实现一个在ListView组件中选中一个选择项后触发消息给主窗口,通过主窗口显示当前选中的项的内容. 进入QtDesigner后,设计一个图形界面,其中窗口界面使用 ...
-
Qt 编程指南 3 信号和槽沟通
https://qtguide.ustclug.org/ 1 信号和槽 所谓信号槽,简单来说,就像是插销一样:一个插头和一个插座.怎么说呢?当某种事件发生之后,比如,点击了一下鼠标,或者按了某个按键, ...
-
QT(4)信号与槽
mainWidget.h #ifndef MAINWIDGET_H #define MAINWIDGET_H #include <QWidget> #include <QPushBu ...
随机推荐
-
将数组里的元素拼接成sql里的in条件
/** * 将数组里的元素拼接成sql里的in条件,如'a1','a2','a3' * @param array * @returns */function makeSqlInStr(array){ ...
-
ggplot2颜色操作
1.颜色列表
-
java类中获取ServletContext的方法
起因是我想要获取一个相对路径,需要用到servletContext的getRealPath()方法,于是上网搜索,找到两种方法来获取ServletContext. 方法1:第一种方法是这样的: Ser ...
-
ABP之N层架构
介绍 应用程序代码库的分层是一种广泛接受的技术,有助于降低复杂性并提高代码的可重用性. 为了实现分层体系结构,ASP.NET Boilerplate遵循领域驱动设计(DDD)的原则. 领域驱动设计(D ...
-
Objective-C中整数与字符串的相互转换
2013/4/15整理: 将整数转换成字符串 Convert Integer to NSString: 方法一: int Value = 112233; NSString *ValueString = ...
-
利用python将数据转存入sqlite3
案例的目标是将存在文件中的json格式数据转存到sqlite数据库中.因此,需要利用python逐行读取json文件中数据,对数据进行解析和入库.具体操作步骤如下: 1.逐行读取json文件 for ...
-
ThinkPHP中调用PHPExcel
//引入PHPExcel vendor('PHPExcel.PHPExcel'); // Create new PHPExcel object $objPHPExcel = new PHPExcel( ...
-
leetcode 121 股票买卖问题系列
描述: 给一些列数字,表示每条股票的价格,如果可以买卖一次(不能同一天买和卖),求最大利益(即差最大). 其他三道问题是,如果能买卖无限次,买卖两次,买卖k次. 题一: 实质是求后面一个数减前一个数的 ...
-
初级Java面试题 - JavaSE篇
p{font-size:18px;} li{font-size:18px;} 加入我的QQ群(701974765) 获取更多好用又好玩的软件,还有不定期发放的福利呦(- ̄▽ ̄)- Java基本数据类型 ...
-
ThinkPHP在入口文件中判断是手机还是PC端访问网站
<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE ...