01 QT子界面向父界面覆盖

  1. 最终效果
    1.1 父界面 MainWindow即qt创建时自带的QMainWindow界面

    • 这里写图片描述

    1.2 子界面other_page 即向工程添加 一个qt设计师界面类->Widget,此处随意扔上三个按钮以示覆盖成功

    • 这里写图片描述

    1.3 最终覆盖结果

    • 这里写图片描述
  2. 代码分析
    2.1 other_page .h(即创建后自动生成的界面,代码不做修改)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好,实现Qt界面的C++ GDAL植被覆盖度计算代码可以参考以下步骤: 1. 在Qt项目中添加GDAL库,可以通过在.pro文件中添加以下语句来实现: ``` INCLUDEPATH += /usr/include/gdal LIBS += -lgdal ``` 2. 创建Qt界面,可以使用Qt Designer来创建界面元素,例如按钮、文本框等。 3. 在Qt界面中添加植被覆盖度计算的输入参数,例如输入文件路径、输出文件路径、植被类型等。 4. 在Qt界面中添加“计算”按钮,并为其添加槽函数。当用户点击“计算”按钮时,槽函数会读取输入参数,并调用植被覆盖度计算代码进行处理。 5. 编写植被覆盖度计算代码,可以参考以下示例代码: ``` #include "gdal_priv.h" #include <iostream> using namespace std; void calculateVegetationCoverage(string inputFilePath, string outputFilePath, string vegetationType) { GDALAllRegister(); // 打开输入文件 GDALDataset *inputDataset = (GDALDataset *) GDALOpen(inputFilePath.c_str(), GA_ReadOnly); if (inputDataset == NULL) { cerr << "无法打开输入文件:" << inputFilePath << endl; return; } // 创建输出文件 GDALDriver *driver = GetGDALDriverManager()->GetDriverByName("GTiff"); GDALDataset *outputDataset = driver->Create(outputFilePath.c_str(), inputDataset->GetRasterXSize(), inputDataset->GetRasterYSize(), 1, GDT_Float32, NULL); outputDataset->SetProjection(inputDataset->GetProjectionRef()); outputDataset->SetGeoTransform(inputDataset->GetGeoTransform()); // 读取输入文件中的植被数据 GDALRasterBand *vegetationBand = inputDataset->GetRasterBand(1); float *vegetationData = new float[inputDataset->GetRasterXSize() * inputDataset->GetRasterYSize()]; vegetationBand->RasterIO(GF_Read, 0, 0, inputDataset->GetRasterXSize(), inputDataset->GetRasterYSize(), vegetationData, inputDataset->GetRasterXSize(), inputDataset->GetRasterYSize(), GDT_Float32, 0, 0); // 计算植被覆盖度 for (int i = 0; i < inputDataset->GetRasterXSize() * inputDataset->GetRasterYSize(); i++) { if (vegetationData[i] == vegetationType) { vegetationData[i] = 1; } else { vegetationData[i] = 0; } } // 写入输出文件 GDALRasterBand *outputBand = outputDataset->GetRasterBand(1); outputBand->RasterIO(GF_Write, 0, 0, inputDataset->GetRasterXSize(), inputDataset->GetRasterYSize(), vegetationData, inputDataset->GetRasterXSize(), inputDataset->GetRasterYSize(), GDT_Float32, 0, 0); // 释放内存 delete[] vegetationData; GDALClose(inputDataset); GDALClose(outputDataset); } ``` 6. 在Qt的槽函数中调用植被覆盖度计算函数,并将输入参数传递给它。例如: ``` void MainWindow::onCalculateButtonClicked() { string inputFilePath = ui->inputFilePathLineEdit->text().toStdString(); string outputFilePath = ui->outputFilePathLineEdit->text().toStdString(); string vegetationType = ui->vegetationTypeLineEdit->text().toStdString(); calculateVegetationCoverage(inputFilePath, outputFilePath, vegetationType); } ``` 7. 运行Qt程序,输入植被覆盖度计算的输入参数,点击“计算”按钮,程序会调用植被覆盖度计算函数,并输出结果到指定的输出文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值