C++ 代码>QObject实例(或从QObject继承的对象)。也就是说,QList。不,您不需要从QObject继承。使用Q_小工具:@RA。我还需要信号,有没有办法绕过不可复制的问题?在这种情况下,您需要继承自QObject,而没有办法绕过不可复制的问题。信
C++ 代码>QObject实例(或从QObject继承的对象)。也就是说,QList。不,您不需要从QObject继承。使用Q_小工具:@RA。我还需要信号,有没有办法绕过不可复制的问题?在这种情况下,您需要继承自QObject,而没有办法绕过不可复制的问题。信,c++,qt,C++,Qt,代码>QObject实例(或从QObject继承的对象)。也就是说,QList。不,您不需要从QObject继承。使用Q_小工具:@RA。我还需要信号,有没有办法绕过不可复制的问题?在这种情况下,您需要继承自QObject,而没有办法绕过不可复制的问题。信号和复制将不起作用。如果复制了发送方或接收方,信号/插槽连接应该怎么做?我认为这在语义上是不正确的。@ulakblade您可以拥有指向QObject实例(或继承自QObject的对象)的QList指针。也就是说,QList。除了继承QObjec
代码>QObject实例(或从
QObject
继承的对象)。也就是说,QList
。不,您不需要从QObject
继承。使用Q_小工具:@RA。我还需要信号,有没有办法绕过不可复制的问题?在这种情况下,您需要继承自QObject
,而没有办法绕过不可复制的问题。信号和复制将不起作用。如果复制了发送方或接收方,信号/插槽连接应该怎么做?我认为这在语义上是不正确的。@ulakblade您可以拥有指向QObject
实例(或继承自QObject
的对象)的QList
指针。也就是说,QList
。除了继承QObject和放置Q_OBJECT宏之外,还需要其他什么吗?当我尝试使用某个属性时,仍会出现“未命名成员”错误。请共享代码。从QObject继承,添加Q_OBJECT宏。添加Q_属性宏。添加读取和/或写入属性C++方法。请注意,这应该转到header,如果在.cpp实现文件中这样做,预处理器(MOC编译器)将无法生成生成的代码。除了继承QObject和放置Q_OBJECT宏之外,还需要其他什么吗?当我尝试使用某个属性时,仍会出现“未命名成员”错误。请共享代码。从QObject继承,添加Q_OBJECT宏。添加Q_属性宏。添加读取和/或写入属性C++方法。请注意,这应该转到header,如果在.cpp实现文件中这样做,预处理器(MOC编译器)将无法生成生成的代码。
// Wrong, won't compile
QList<QObject> objects;
// OK, leverage the compositeness of QObject
QObject objects;
(new QObject(&objects))->setObjectName("obj1");
(new QObject(&objects))->setObjectName("obj2");
for (auto obj : objects.children()) qDebug() << obj->objectName();
// OK, use C++11 collections
std::list<QObject> objects;
objects.emplace_back();
objects.emplace_back();
objects.front().setObjectName("obj1");
objects.back().setObjectName("obj2");
for (const QObject & obj : objects) qDebug() << obj.objectName();