QGraphicsItemGroup组合中的一些细节

Posted 可峰科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QGraphicsItemGroup组合中的一些细节相关的知识,希望对你有一定的参考价值。

注意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);

     

以上是关于QGraphicsItemGroup组合中的一些细节的主要内容,如果未能解决你的问题,请参考以下文章

使 QGraphicsItemGroup 的子级不可选择

PHP数组细讲

带有 QGraphicsItemGroup 的事件

如何设置 QGraphicsItemGroup 的显示范围?

从 QGraphicsScene/QgraphicsItemGroup/QGraphicsView 中正确删除项目

Qt 之 QGraphicsItemGroup