【问题标题】:Proper way to disconnect signals from two QObjects not being destroyed/deleted从两个未被破坏/删除的 QObjects 断开信号的正确方法
【发布时间】:2013-06-12 20:29:23
【问题描述】:

将两个 QObject 彼此断开以使一个对象不再发出信号触发另一个对象中的插槽的正确方法是什么?这两个对象都不会被销毁,所以disconnect()will not be called inQObject::~QObject()。我在文档中看到了 disconnect() 方法的两个版本,但都没有一个指向两个对象的指针。

重要的是,在断开连接后,接收对象插槽中不会再收到信号。缓冲区清除未处理信号时触发几次是可以的,但信号必须在很短的时间内停止。

对于执行此操作的正确方法似乎有些混乱。

【问题讨论】:

    标签: c++ qt qt4 signals-slots


    【解决方案1】:

    来自Qt docs

    [To] 断开特定接收器:

    disconnect(myObject, 0, myReceiver, 0);
    

    调用此函数后,从myObject 的信号到myReceiver 的插槽的所有连接都将断开。

    【讨论】:

    • 谢谢!对于未来的读者,您还可以使用myobject->disconnect( myReceiver ); 更优雅。
    • 您应该使用 nullptr 而不是 0 以避免警告。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    相关资源
    最近更新 更多