Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用鼠标调整QGraphicsRectItem的大小_C++_Image_Qt_User Interface_Qrect - Fatal编程技术网

C++ 如何使用鼠标调整QGraphicsRectItem的大小

C++ 如何使用鼠标调整QGraphicsRectItem的大小,c++,image,qt,user-interface,qrect,C++,Image,Qt,User Interface,Qrect,我正在开发一个图形用户界面(GUI),它允许用户绘制几个矩形,并使用鼠标指针调整它们的大小 绘制矩形的代码非常有效。但是,在调整大小时,会出现一些不需要的错误 这是我的密码: void ImageGraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event){ if(startModifying==true){ if(isOnTopLeftCornerPressed==true){

我正在开发一个图形用户界面(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());

         }   

       }
}
开始修改:

此变量检查用户是否处于“修改模式”

isOnTopLeftCornerPressed/isOnTopRightCornerPressed/isOnBottomRightCornerPressed/isOnBottomLeftCornerPressed

这些变量检查用户是否用鼠标指针按下了矩形角之一(右上角、左上角、右下角和左下角)

rectmedited

这是一个QGraphicsRectItem

使用此代码,用户可以调整矩形的大小:

但是,当高度或宽度在调整大小过程中变为负值时,它将停止工作:


调用mouseMoveEvent()。但是,当width()时,什么停止工作?怎么用?你的mouseMoveEvent()还会被调用吗?嗨,Mehrdad。调用mouseMoveEvent()。但是,当宽度()