据我了解,以下代码是创建QObject的完美方式QLabel*label=newQLabel("label");QWidgetwindow;label->setParent(&window);window.show();当我在无处不在阅读时,“父对象获得了新创建对象的所有权——并最终调用了删除”,或者“复合对象获得了子对象的所有权,因此,只要父类拥有完成后,您可以放心,当父级被销毁时,子QObjects将被销毁”(来自HowdoesQtdeleteobjects?AndwhatisthebestwaytostoreQObjects?)有人能告诉我Qt如何“取得”QObject的所有权吗
我知道Qobjects应该是身份而不是值,例如你不能复制它们,默认情况下,复制构造函数和赋值被禁用,如qt文档中所述。但是是否可以使用克隆方法从现有的QObject创建新的QObject?这会是逻辑错误吗?如果我说QObjectb;QObjecta;b.cloneFrom(a);或QObjecta=newQOBject();QObjectb=newQOBject();b->cloneFrom(a);克隆方法会复制成员等内容,这是错误的吗?如果可以的话,我可以编写自己的复制构造函数和赋值运算符吗?注意:我实际上想用继承qobject的类来尝试这个。 最佳答案
ThreadsandQObjectsThreads继承了QObjects类。它发出信号来指示线程已开始执行或已完成执行,并提供一些槽函数。更有趣的是,QObjects可以在多个线程中使用,发出调用其他线程中槽的信号,并将事件发布到“live”在其他线程中的对象。这是可能的,因为每个线程都允许有自己的事件循环。QObjectReentrancyQObject的重入QObject是可重入的。它的大多数非GUI子类,如QTimer、QTcpSocket、QUdpSocket和QProcess,也是可重入的,因此可以同时从多个线程使用这些类。请注意,这些类被设计为在单个线程中创建和使用;不能保证在一个