改变所有者-Qt信号槽--入门必备

改变所有者QObject子类对象可以修改它所属的父对象。父对象知道何时子对象被删除一系列函数实现返回指针,从其所有者“拿走”释放的数据,把它留给拿取者处理obj->setParent(newParent); delete listWidget->item(0); //删除第一个item(不安全) QLayoutItem *QLayout::takeAt(int); QListWidgetItem *QListWidget::takeItem(int); // Safe alternative QListWidgetItem *item = listWidget->takeItem(0); if (item) { delete item; } * item列表本质上并不是子对象,而是拥有者。这个例子进行了说明。 * QObject构建成父子关系,但是这些层级并不严格,可以四处搬移项目。要改变一个父对象,仅需以一个新的父对象指针为参数调用setParent。这会同时向新旧父对象通告更改。因为父对象已经被告知,所以你可以简单地从列表或类似中删除项目以移走它们如果你想迁移对象,你可以寻找拿取项目的方法。这表示父对象释放子对象,而你得到指向子对象的指针。然后这可以用于进一步操作(比如把它加到另一个父对象处)。 Unsafe/safe例子:如果item零不存在的话第一个例子就没有用,你不能在一个原子操作中检查并删除它。在第二个当中,如果item零不存在则item为空,否则你就已经已经把它从列表中移出来并可自由处理。待续
ppt 文件大小:2.15MB