首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确关闭QMetaObject::Connection

正确关闭QMetaObject::Connection
EN

Stack Overflow用户
提问于 2019-03-01 16:33:23
回答 1查看 504关注 0票数 2

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

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

代码语言:javascript
复制
QMetaObject::Connection _sessionStarted = Q_NULLPTR; //or nullptr

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

如果我真的有连接,我还必须在某个地方检查

代码语言:javascript
复制
if (_sessionStarted == Q_NULLPTR)

这是可行的,但是我如何重置它呢?

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

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-01 16:37:26

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

代码语言:javascript
复制
QMetaObject::Connection _sessionStarted;

检查有效性也是如此:

代码语言:javascript
复制
if(_sessionStarted)
    //Connection is valid and active

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

代码语言:javascript
复制
QObject::disconnect(_sessionStarted);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54940732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档