判断信号是否绑定了
判断 是否 绑定 信号
2023-09-14 09:07:01 时间
本文介绍Qt的信号是否被连接了和信号槽之间的参数是否一致的判断方法。
1. 判断信号是否正确连接
通过判断connect的返回值是否为true。
bool ok = connect(this, SIGNAL(signal1()), this, SLOT(slot1()));
// 打印true
qDebug() << ok;
2. 判断信号是否被连接了
receivers返回的是该信号的连接数,如果大于0则为信号有连接。
- 原型:
[protected] int QObject::receivers(const char *signal) const
- 实现
bool isSignalConnected = this->receivers(SIGNAL(signal1())) > 0;
- Qt5.0版本以上可以这样做:
QMetaMethod _signal1 = QMetaMethod::fromSignal(&Object::signal1);
isSignalConnected = this->isSignalConnected(_signal1);
3. 判断信号槽之间参数是否一致
- 原型:
[static] bool QMetaObject::checkConnectArgs(const char *signal, const char *method)
[static] bool QMetaObject::checkConnectArgs(const QMetaMethod &signal, const QMetaMethod &method)
- 实现:
bool ok = QMetaObject::checkConnectArgs(SIGNAL(signal2(int)), SLOT(slot2(int)));
qDebug() << ok;
4. 例子
class Object : public QObject
{
Q_OBJECT
public:
Object()
{
// 返回值可判断信号槽是否连接成功。
bool ok = connect(this, SIGNAL(signal1()), this, SLOT(slot1()));
// 打印true
qDebug() << ok;
// receivers返回的是该信号的连接数,如果大于0则为信号有连接。
bool isSignalConnected = this->receivers(SIGNAL(signal1())) > 0;
// 打印true
qDebug() << isSignalConnected;
QMetaMethod _signal1 = QMetaMethod::fromSignal(&Object::signal1);
isSignalConnected = this->isSignalConnected(_signal1);
// 打印true
qDebug() << isSignalConnected;
// 检查参数是否一致
ok = QMetaObject::checkConnectArgs(SIGNAL(signal2(int)), SLOT(slot2(int)));
// 打印true
qDebug() << ok;
}
signals:
void signal1();
void signal2(int);
public slots:
void slot1() { }
void slot2(int) { }
};
相关文章
- Easy系列视频平台如何快捷判断视频流编码格式?
- 如何判断数组中是否含有某个元素的个数_数组有多少个元素怎么计算
- linux查看网卡实时速率命令_怎么判断网卡速率是否异常
- 如何判断一个网址是否安全_域名和dns的区别
- sql查询序列是否存在_oracle if判断是否为空
- Thinking--复杂逻辑多分支判断优雅写法
- iOS判断字符串是否为合法邮箱地址详解手机开发
- javascript判断变量是否为空的方法详解编程语言
- C语言判断闰年,即判断年份是否为闰年
- JSP Out.isAutoFlush()方法:判断缓冲区是否自动刷新
- MySQL中检查表是否存在的方法(mysql判断表是否存在)
- MySQL中使用IF语句进行复合逻辑判断(mysql if 逻辑)
- 探索Redis断开连接的判断方法(判断redis断开连接)
- Oracle 中实现复杂条件判断的方法(oracle 中条件判断)
- php判断访客是否为搜索引擎蜘蛛的函数代码
- 判断输入是否为空,获得输入类型的JS代码
- JQuery判断HTML元素是否存在的两种解决方法
- PHP判断变量是否为0的方法
- php判断字符串中是否包含html标签
- js判断js函数、变量是否存在的简单示例代码
- php判断数组元素中是否存在某个字符串的方法
- JavaScript判断变量是否为空的自定义函数分享