Помогите пожалуйста!!! Пытаюсь сделать перемещение с помощью подключения вот этого классаMvScene::MvScene(QObject *parent) : QGraphicsScene(parent)
{ x=0;
y=0;
mov=0;
backgr1=addPixmap(QPixmap("/backgrounds/1"));
backgr1->setData(0, "Background");
}
void MvScene::mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent)
{QGraphicsItem * item = itemAt(mouseEvent->scenePos());
if (mouseEvent->button() == Qt::LeftButton)
{ if (item)
if (item->data(0) == "Text")
{item->setSelected(true);
mov=1;
point=mouseEvent->pos();
curtext=item->data(0).toString();
item->setCursor(Qt::ClosedHandCursor);
}}
if (mouseEvent->button() == Qt::RightButton) {
placeBox(mouseEvent->scenePos().x(), mouseEvent->scenePos().y());
}
}
void MvScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent/*,QGraphicsSceneMoveEvent *move*/)
{QGraphicsItem * item = itemAt(mouseEvent->scenePos());
if (item)
if (item->data(0) == "Text")
{item->setCursor(Qt::PointingHandCursor);*/
if(mov==1){
item->setPos((mouseEvent->scenePos().x()-point.x()),(mouseEvent->scenePos().y()-point.y()));
MvScene::mouseMoveEvent(mouseEvent/*,move*/);}
}
void MvScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
QGraphicsItem * item = itemAt(mouseEvent->scenePos());
if (mouseEvent->button() == Qt::LeftButton)
{ if (item)
if (item->data(0) == curtext)
if (mov==1)
{item->setSelected(false);
item->setCursor(Qt::PointingHandCursor);
mouseEvent->accept();
mov=2;
qDebug()<<"release";
}
void MvScene::makeText(/*int inc, QString str, int height, int otstup, QFont font*/)
{ QGraphicsItem * item;
item= addText("465468464654654654654654"/*str,font)->setPos(otstup,(height-((otstup*2)/16))*inc*/);
item->translate(x,y);
item->setData(0, "Text");
item->setAcceptHoverEvents(true);
item->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemSendsGeometryChanges);
item->setFlag(QGraphicsItem::ItemIsSelectable);
}
}
В главной программе написано следующее:class MvScene;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
z=0;
scene=new MvScene;
image1=":/backgrounds/1";
image2=":/backgrounds/2";
scene->setSceneRect(0,0,900,500);
backgr.setCoords(0,0,scene->width(),scene->height());
resize(900,500);
ui->graphicsView->setScene(scene);
}
void MainWindow::ifcurtabset()
{
if (ui->tabWidget->currentIndex()==0)
setfields1();
else
setfields2();
}
void MainWindow::resize(int w, int h){
QMatrix m = ui->graphicsView->matrix();
if (ui->radioButton->isChecked())
m.setMatrix(441.0/w, 0, 0, 229.0/h, m.dx(), m.dy());
else
{m.setMatrix(300.0/w, 0, 0, 441.0/h, m.dx(), m.dy());
}
ui->graphicsView->setMatrix(m);
if (ui->tabWidget->currentIndex()==0)
pix.load(image1);
else
pix.load(image2);
wid=w;
hei=h;
scene->addRect(ramka);
ifcurtabset();
}
void MainWindow::setfields1()
{scene->clear();
pix.load(image1);
scene->addPixmap(pix)->scale(scene->width()/pix.width(),scene->height()/pix.height());
scene->addRect(0,0,wid,hei);
ramka=QRect(30,30,(wid-60),(hei-60));
scene->addRect(ramka);
otstup=ramka.left();
scene->makeText();
}
При запуске программа работает нормально, но при попытке перемещения на mousemoveevent зацыкливается и вылитает. Подскажите пожалуйста в чем проблема??