我正在开发一个图形用户界面(GUI),它允许用户绘制几个矩形并使用鼠标指针调整它们的大小。
绘制矩形的代码完美无缺。但是,当涉及到调整大小时会出现一些不需要的错误。
这是我的代码:
void ImageGraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event){
if(startModifying==true){
if(isOnTopLeftCornerPressed==true){
QRectF rectF_buffer(rectModified->rect().bottomRight().x(),rectModified->rect().bottomRight().y(),event->scenePos().x()-rectModified->rect().bottomRight().x(),event->scenePos().y()-rectModified->rect().bottomRight().y());
rectModified->setRect(rectF_buffer.normalized());
}
if(isOnTopRightCornerPressed==true){
QRectF rectF_buffer(rectModified->rect().bottomLeft().x(),rectModified->rect().bottomLeft().y(),event->scenePos().x()-rectModified->rect().bottomLeft().x(),event->scenePos().y()-rectModified->rect().bottomLeft().y());
rectModified->setRect(rectF_buffer.normalized());
}
if(isOnBottomRightCornerPressed==true){
QRectF rectF_buffer(rectModified->rect().topLeft().x(),rectModified->rect().topLeft().y(),event->scenePos().x()-rectModified->rect().topLeft().x(),event->scenePos().y()-rectModified->rect().topLeft().y());
rectModified->setRect(rectF_buffer.normalized());
}
if(isOnBottomLeftCornerPressed==true){
QRectF rectF_buffer(rectModified->rect().topRight().x(),rectModified->rect().topRight().y(),event->scenePos().x()-rectModified->rect().topRight().x(),event->scenePos().y()-rectModified->rect().topRight().y());
rectModified->setRect(rectF_buffer.normalized());
}
}
}
startModifying:
此变量检查用户是否处于“修改模式”。
isOnTopLeftCornerPressed / isOnTopRightCornerPressed / isOnBottomRightCornerPressed / isOnBottomLeftCornerPressed :
这些变量检查用户是否用鼠标指针按下其中一个矩形角(右上角,左上角,右下角和左下角)。
rectModified
这是一个QGraphicsRectItem
使用此代码,用户可以调整矩形的大小:
调用mouseMoveEvent()。但是,当width()<0时,“normalized”函数不会交换左右角,如果在Qt文档中说的是height()&lt; 0,则不会交换顶角和底角。
你能帮我吗?