注意QGraphicsItem被放入Group中或者设置了item->setSelected(false)时,再次调用scene->selectedItems()原先的item已经被移除,需要注意。
组合的时候可以这样写,好理解一些。
void MainWindow::on_actGroup_triggered()
{ //组合
int cnt=scene->selectedItems().count();
if (cnt>1)
{
QGraphicsItemGroup* group =new QGraphicsItemGroup; //创建组合
scene->addItem(group); //组合添加到场景中
//peak.ding 这样写好理解一些
auto selected_items = scene->selectedItems();
for (int i=0;i<cnt;i++)
{
QGraphicsItem* item=selected_items.at(i);
item->setSelected(false); //清除选择虚线框
item->clearFocus();
group->addToGroup(item); //添加到组合
}
group->setFlags(QGraphicsItem::ItemIsMovable
| QGraphicsItem::ItemIsSelectable
| QGraphicsItem::ItemIsFocusable);
group->setZValue(++frontZ);
// group->clearFocus();
scene->clearSelection();
group->setSelected(true);
}
}