开发环境:Qt Creator(Qt 5.14.2)+ ArcGIS Runtime 100.8
本文只包含实现特定功能所需的API和代码片段,以及某些问题的解决方案,用于个人备忘,排版爆炸,还请见谅。
功能实现:
一. 资源管理
1.Qt加载svg矢量图
使用QtSvg中的QSvgRenderer
1 QImage loadSvg(QString path = PLANEPATH){ 2 // 加载svg,返回QImage 3 QSvgRenderer* svgRender = new QSvgRenderer(); 4 svgRender->load(path); 5 QImage image(x, y, QImage::Format_ARGB32); 6 image.fill(Qt::transparent); 7 QPainter painter(&image); 8 svgRender->render(&painter); 9 return image; 10 }
2.ArcGIS加载tpk格式地图
使用TileCache和ArcGISTiledLayer,添加到地图的layer中。
3.ArcGIS加载显示自定义图片
Graphic:使用PictureMarkerSymbol实例化Graphic,添加到GraphicsOverlay中
二. 动画
1.Qt控件的动画效果
放缩/位移:使用QPropertyAnimation
2.定时移动
可以使用QTimer
3.ArcGIS更改图片的方向和位置
Graphic::setGeometry(),PictureMarkerSymbol::setAngle()
问题:
1.QWidget提升后样式表失效(Qt设计)
解决方案:重写父类QWidget的paintEvent
1 // 重写paintEvent使stylesheet生效 2 void QScaleWidget::paintEvent(QPaintEvent *e){ 3 QStyleOption opt; 4 opt.init(this); 5 QPainter p(this); 6 style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); 7 QWidget::paintEvent(e); 8 }