gpt4 book ai didi

c++ - 如何注册对 Qt 容器的引用?

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:22 24 4
gpt4 key购买 nike

我想通过QQueue<double>&通过信号到另一个线程中的插槽。我想通过引用传递队列,因为我不希望在更改插槽中的队列元素时复制数据。所以我应该注册这个元类型来拥有 QueuedConnection。当我像这样注册时:

qRegisterMetaType<QQueue<double>& >("QQueue<double>&");

我收到以下错误:

error: no matching function for call to 'qRegisterMetaType(const char [16])'

如何注册?

最佳答案

你注册的是没有任何引用的基类型。

qRegisterMetaType<QQueue<double>>();

您还必须在每个将使用它的编译单元中声明元类型 - 因此理想情况下,您应该在其自己的头文件中有一个 typedef:

// DoubleQueue.h
#ifndef DOUBLEQUEUE_H
#define DOUBLEQUEUE_H

#include <QQueue>

typedef QQueue<double> DoubleQueue;
Q_DECLARE_METATYPE(DoubleQueue)

#endif

然后您必须始终只使用和注册 DoubleQueue - 请记住,对于 moc,类型是一段文本。剥离引用后,它必须完全匹配。

qRegisterMetaType<DoubleQueue>();

关于c++ - 如何注册对 Qt 容器的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23219770/

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