Здравствуйте.
Возникла проблема при реализации функциональности перетаскивании карты.
После нажатия и удерживания кнопки мыши изображения пропадает и возвращается только после отжатия кнопки.
Astra Linux, ГИС Конструктор для Qt Designer x64 версия 12. Qt4.
На ГИС Конструктор версии 11 изображение никуда не пропадало.
Код:
Возникла проблема при реализации функциональности перетаскивании карты.
После нажатия и удерживания кнопки мыши изображения пропадает и возвращается только после отжатия кнопки.
Astra Linux, ГИС Конструктор для Qt Designer x64 версия 12. Qt4.
На ГИС Конструктор версии 11 изображение никуда не пропадало.
Код:
Код |
---|
MainWindow::MainWindow() { viewMap = new QDMapView(); //... // Остальной код //... connect(viewMap, SIGNAL(SignalMousePress(int,int,int)), this, SLOT(mapMousePress(int,int,int))); connect(viewMap, SIGNAL(SignalMouseRelease(int,int,int)), this, SLOT(mapMouseRelease(int,int,int))); } void MainWindow::mapMousePress(int x, int y, int mod) { // Getting top left point from map int mapx,mapy; viewMap->GetMapLeftTop(&mapx,&mapy); // Getting reference point from widget QPoint pmap = viewMap->mapFromGlobal(QCursor::pos()); setCursor(Qt::ClosedHandCursor); // Draging map mousePressed = true; while (mousePressed) { // Getting new point pmap = viewMap->mapFromGlobal(QCursor::pos()); // Calculating offset int dx = pmap.x() - x; int dy = pmap.y() - y; // Offset for the point x = x + dx; y = y + dy; // Offset for the map mapx = mapx - dx; mapy = mapy - dy; // Setting new point for map viewMap->SetMapLeftTop(mapx,mapy); } } void MainWindow::mapMouseRelease(int x, int y, int mod) { mousePressed = false; setCursor(Qt::ArrowCursor); } |