正确关闭QMetaObject :: Connection

时间:2019-03-01 08:33:23

标签: c++ qt

我既不是Qt也不是C ++开发人员,但是对于一个小任务,我必须注册QMetaObject :: Connection。

我的问题是,如何正确关闭连接

QMetaObject::Connection _sessionStarted = Q_NULLPTR; //or nullptr

给我 error: conversion from 'std::nullptr_t' to non-scalar type 'QMetaObject::Connection' requested

我还必须检查某个地方是否有联系

if (_sessionStarted == Q_NULLPTR)

哪个有效,但是如何重置?

我还尝试了delete _sessionStarted并检查了docs

谢谢!

1 个答案:

答案 0 :(得分:3)

QMetaObject::Connection作为值类型,而不是指针。基本上,它就像是指向内部连接数据的智能指针。要创建“无效”连接,只需使用默认构造函数创建一个即可:

QMetaObject::Connection _sessionStarted;

检查有效性是否相同:

if(_sessionStarted)
    //Connection is valid and active

要“删除”连接,即从信号中断开插槽,请使用QObject::disconnect方法:

QObject::disconnect(_sessionStarted);