在(1)的基础上,增加了选择文件的功能,添加栅格图片的功能,以及删除矢量、栅格数据的功能。
选择栅格图层,实现如下:
void MainWindow::openImage(){
//选择文件
QString fileName = QFileDialog::getOpenFileName(this,tr("Open image file"),"","*.tif");
if(fileName.isEmpty()){
QMessageBox::critical(this,"警告","文件名称为空");
return;
}
//存储图层
QgsRasterLayer *my_layer = nullptr;
//图层 name 设置为tifFile 供删除时使用
QString basename = "tifFile";
QString provideKey = "";
if(provideKey.isEmpty()){
my_layer = new QgsRasterLayer(fileName,basename);
}else{
my_layer = new QgsRasterLayer(fileName,basename,provideKey);
}
if(!my_layer->isValid()){
QMessageBox::critical(this,"警告","栅格图层无效");
return;
}
//添加到图层list
layers.push_front(my_layer);
//画布重绘
mapCanvas->setExtent(my_layer->extent());
mapCanvas->setLayers(layers);
mapCanvas->refresh();
}
选择矢量图层,如下(照葫芦画瓢):

此博客介绍了如何在地图应用程序中实现文件选择功能,包括添加和删除栅格和矢量图层,并展示了相关的代码片段。开发者可以学习如何通过QFileDialog选取文件,创建并管理QgsRasterLayer和QgsVectorLayer,以及如何根据图层名进行删除操作。
最低0.47元/天 解锁文章
913

被折叠的 条评论
为什么被折叠?



