正确关闭QmetaObject ::连接

correctly close QMetaObject::Connection

本文关键字:连接 QmetaObject      更新时间:2023-10-16

我不是qt也不是C 开发人员,而是为了一项小任务,我必须注册qmetaObject ::连接。

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

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并检查了文档

预先感谢!

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

QMetaObject::Connection _sessionStarted;

检查有效性也是如此:

if(_sessionStarted)
    //Connection is valid and active

要"删除"连接,即与信号断开插槽的连接,使用QObject::disconnect方法:

QObject::disconnect(_sessionStarted);