Qt信号槽传const&和传值有什么不同 您所在的位置:网站首页 const和引用 Qt信号槽传const&和传值有什么不同

Qt信号槽传const&和传值有什么不同

2024-06-13 03:27| 来源: 网络整理| 查看: 265

之前一直在纠结Qt的信号槽是否要传引用,如果传引用会不会有悬挂引用的问题。

故参考Copied or Not Copied: Arguments in Signal-Slot Connections?这篇博客测试一下

CopyTest.h

#include class CCopyable { public: // qRegisterMetaType的类需要默认构造函数 CCopyable(); CCopyable(int id, const QString &name); CCopyable(const CCopyable &rhs); ~CCopyable(); CCopyable &operator=(const CCopyable &rhs); private: int m_id; QString m_name; }; class CSender : public QObject { Q_OBJECT public: CSender(QObject *parent = nullptr); ~CSender() {} void sendSignal(); signals: void sendConstRef(const CCopyable &c); void sendValue(CCopyable c); void testSig(QString); void testSig(QString, int); //void testSig(const QString&); }; class CReceiver : public QObject { Q_OBJECT public: CReceiver(QObject *parent = nullptr); ~CReceiver() {} public slots: void receiveConstRef(const CCopyable &c); void receiveValue(CCopyable c); }; void signalSlotCopyTest();

CopyTest.cpp

#include "CopyTest.h" #include #include #include #define CaseNum 4 #define EnableQueuedConnection CCopyable::CCopyable() { } CCopyable::CCopyable(int id, const QString &name) : m_id(id) , m_name(name) { } CCopyable::~CCopyable() { } CCopyable::CCopyable(const CCopyable &rhs) { qDebug()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有