我既不是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
谢谢!
答案 0 :(得分:3)
QMetaObject::Connection
作为值类型,而不是指针。基本上,它就像是指向内部连接数据的智能指针。要创建“无效”连接,只需使用默认构造函数创建一个即可:
QMetaObject::Connection _sessionStarted;
检查有效性是否相同:
if(_sessionStarted)
//Connection is valid and active
要“删除”连接,即从信号中断开插槽,请使用QObject::disconnect
方法:
QObject::disconnect(_sessionStarted);