使用此功能,我可以从QGraphicsItem
中删除选定的QGraphicsView
。
如何获取枚举的省略号以便接收"Deleted ellipse n°..."
之类的通知。
void MainWindow::deleteItem()
{
foreach (QGraphicsItem *item, scene->selectedItems()) {
if (item->type() == ellipse->Type) {
scene->removeItem(item);
delete item;
QMessageBox::information(this,"Notification", "Deleted");
}
}
}
答案 0 :(得分:2)
一些方法
假设您只关心该迭代:
int ix = 0; // add this
foreach (QGraphicsItem *item, scene->selectedItems()) {
if (item->type() == ellipse->Type) {
scene->removeItem(item);
delete item;
std::cout << "Deleted ellipse number " << ix++ << std::endl; // and add this
QMessageBox::information(this,"Notification", "Deleted");
}
}
以上仅适用于您的排序仅对应于foreach()循环的情况。如果您的商品有任意顺序:
std::unordered_map<QGraphicsItem*, int> mGraphicsItems;
当然,假设您可以填充它。如果可以,请在调用delete()之前执行查找,以获取枚举值。虽然不是很优雅,但增加了空间。
其他方法是继承QGraphicsItem [未经测试的代码,但你明白了]
class MyGraphicsItem : public QGraphicsItem
{
Q_OBJECT
public:
// snip
int index() const { return mIndex; }
void setIndex( int i ) { mIndex = i; }
private:
int mIndex;
};
只需在创建QGraphicsItem时以任何方式设置索引,在调用delete之前,使用item-&gt; index()打印出(或做任何事情);