gpt4 book ai didi

c++ - QT使用规范化签名有什么好处

转载 作者:搜寻专家 更新时间:2023-10-31 01:08:21 24 4
gpt4 key购买 nike

我读到 QT 在信号/槽机制上应用签名规范化过程。 MOC 生成器基本上从信号/槽中删除了 const 引用限定符,并仅按值传递它们。

我有一个类经常生成一个名为 BIG_DATA 的大数据结构,其他一些类需要在每次发出时捕获这个数据结构。

struct BIG_DATA
{
// very big data
};

class DataGenerator
{
// some methods which generate BIG_DATA

signals:
void data_updated(const BIG_DATA &);
};

我做什么:

connect(&data_generator_object, SIGNAL(data_updated(const BIG_DATA &)), this, SLOT(catch_new_data(const BIG_DATA &)));

QT 的作用:

connect(&data_generator_object, SIGNAL(data_updated(BIG_DATA)), this, SLOT(catch_new_data(BIG_DATA)));

那么,在这里删除 const 引用限定符有什么好处?我将如何处理将整个 BIG_DATA 复制到 data_updated 信号的许多客户端的开销?

似乎最好的方法是使用指向生成的 BIG_DATA 对象的指针,如果 QT 也没有尝试删除指针签名的话。

最佳答案

签名归一化仅用于识别信号和槽。也就是说,如果你想告诉 connect() 使用哪个信号或插槽,你需要在那里传递规范化签名。但是您的信号和插槽的签名保持不变。如果您使用直接连接(这是单线程程序的默认设置),您的对象将不会被复制。

关于c++ - QT使用规范化签名有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18091058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com