16,211
社区成员
发帖
与我相关
我的任务
分享
QGraphicsPolygonItem *preRecItem; //第一个被选中的图形
QGraphicsPixmapItem *prePixItem; //第一个被选中的图形的方框
QGraphicsPolygonItem *lastRecItem; //第二个被选中的图形
QGraphicsPixmapItem *lastPixItem; //第二个被选中的图形的方框
void MyScene::dealWithLineRoad() //直线相连的两个图形的消除函数
{
QPen pen(QBrush(Qt::blue), 2);
lastRecItem = this->addPolygon(lastPixItem->mapToScene(lastPixItem->boundingRect()), pen); //显示第二个方框
QGraphicsLineItem *lineItem = this->addLine(prePixItem->x() + 25, prePixItem->y() + 25, lastPixItem->x() + 25, lastPixItem->y() + 25, pen); //显示一条直线路径
//上面的显示完之后,接着就是消除图形,路径,还有方框
prePixItem->hide();
lastPixItem->hide();
this->removeItem(preRecItem);
this->removeItem(lastRecItem);
removeItem(lineItem);
}
lastRecItem = this->addPolygon(lastPixItem->mapToScene(lastPixItem->boundingRect()), pen); //显示第二个方框
this->update();
QGraphicsLineItem *lineItem = this->addLine(prePixItem->x() + 25, prePixItem->y() + 25, lastPixItem->x() + 25, lastPixItem->y() + 25, pen); //显示一条直线路径
this->update();
这样的操作,然后把
prePixItem->hide();
lastPixItem->hide();
this->removeItem(preRecItem);
this->removeItem(lastRecItem);
removeItem(lineItem);
封装成一个函数,但还是解决不了耶~
QPen pen(QBrush(Qt::blue), 2);
lastRecItem = this->addPolygon(lastPixItem->mapToScene(lastPixItem->boundingRect()), pen); //显示第二个方框
QGraphicsLineItem *lineItem = this->addLine(prePixItem->x() + 25, prePixItem->y() + 25, lastPixItem->x() + 25, lastPixItem->y() + 25, pen); //显示一条直线路径
添加之后没刷新吧?这几个动作分别写成不同函数比较好的一点