Чтобы можно было нажать на карту и тащить мышью реализовал в QtCreator + GISDesigner15 + компилятор MSVC2019 следующий код:
И все бы ничего, карта перемещается мышью, но вот ее отображение, пока тащищь моргает то серым, то опять карта, отпустишь - нормально видно.
Аналогичный код в Delphi XE10 работает отлично, без морганий.
Моджет какую-нибудь буферизацию надо включить?
| Код |
|---|
map = new QDMapView(this);
ui->gisLayout->addWidget(map);
connect(map,&QDMapView::SignalMouseMove,this,&GISForm::onMapMouseMove);
connect(map,&QDMapView::SignalMousePress,this,&GISForm::onMapMousePress);
connect(map,&QDMapView::SignalMouseRelease,this,&GISForm::onMapMouseRelease);
connect(map,&QDMapView::SignalMouseDoubleClick,this,&GISForm::onMapMouseDoubleClick);
...
void GISForm::onMapMousePress(int x, int y, int modkeys)
{
FX=x;
FY=y;
FCapture=true;
map->setCursor(Qt::OpenHandCursor);
}
void GISForm::onMapMouseMove(int x, int y, int modkeys)
{
int l,t;
double mx,my;
//отобразить координаты
map->GetMapLeftTop(&l,&t);
mx=l+x;
my=l+y;
mapPictureToPlane(map->GetMapHandle(),&mx,&my);
ui->Status->setText(QString::asprintf("X=%.8f Y=%.8f",mx,my));
//переместить карту
if (FCapture){
l += FX-x;
t += FY-y;
map->SetMapLeftTop(l,t);
FX=x;
FY=y;
}
}
void GISForm::onMapMouseRelease(int x, int y, int modkeys)
{
FCapture=false;
map->setCursor(Qt::ArrowCursor);
}
|
Аналогичный код в Delphi XE10 работает отлично, без морганий.
Моджет какую-нибудь буферизацию надо включить?