90 lines
2.8 KiB
C++
90 lines
2.8 KiB
C++
#include "QMergeRasterProcessDialog.h"
|
|
#include "QToolProcessBarDialog.h"
|
|
#include "ImageOperatorBase.h"
|
|
#include <QString>
|
|
#include <QVector>
|
|
#include <QFileDialog>
|
|
#include <QMessageBox>
|
|
QMergeRasterProcessDialog::QMergeRasterProcessDialog(QWidget *parent)
|
|
: QDialog(parent)
|
|
{
|
|
ui.setupUi(this);
|
|
|
|
QObject::connect(ui.pushButtonSelect, SIGNAL(clicked(bool)), this, SLOT(onpushButtonSelectClick(bool)));
|
|
QObject::connect(ui.AddpushButton, SIGNAL(clicked(bool)), this, SLOT(onAddpushButtonClick(bool)));
|
|
QObject::connect(ui.RemovepushButton, SIGNAL(clicked(bool)), this, SLOT(onRemovepushButtonClick(bool)));
|
|
QObject::connect(ui.buttonBoxDialog, SIGNAL(accepted()), this, SLOT(acceptclick()));
|
|
QObject::connect(ui.buttonBoxDialog, SIGNAL(rejected()), this, SLOT(rejectclick()));
|
|
}
|
|
|
|
QMergeRasterProcessDialog::~QMergeRasterProcessDialog()
|
|
{}
|
|
|
|
|
|
void QMergeRasterProcessDialog::onpushButtonSelectClick(bool checked ) {
|
|
|
|
// 调用文件选择对话框并选择一个 .tif 文件
|
|
QString fileName = QFileDialog::getSaveFileName(this,
|
|
u8"选择 TIF 文件", // 对话框标题
|
|
"", // 初始目录,可以设置为路径
|
|
u8"Image Files (*.tif);;All Files (*)"); // 文件类型过滤器
|
|
|
|
if (!fileName.isEmpty()) {
|
|
this->ui.lineEditOutPath->setText(fileName);
|
|
}
|
|
else {
|
|
QMessageBox::information(this, u8"没有选择文件", u8"没有选择任何文件");
|
|
}
|
|
|
|
}
|
|
|
|
void QMergeRasterProcessDialog::onAddpushButtonClick(bool checked )
|
|
{
|
|
QStringList fileNames = QFileDialog::getOpenFileNames(
|
|
this, // 父窗口
|
|
tr(u8"选择TIF文件"), // 标题
|
|
QString(), // 默认路径
|
|
tr(u8"TIF Files (*.tif);;All Files (*)") // 文件过滤器
|
|
);
|
|
|
|
// 如果用户选择了文件
|
|
if (!fileNames.isEmpty()) {
|
|
QString message = "选择的文件有:\n";
|
|
for (const QString& fileName : fileNames) {
|
|
this->ui.listWidgetRaster->addItem(fileName);
|
|
}
|
|
|
|
}
|
|
else {
|
|
QMessageBox::information(this, tr(u8"没有选择文件"), tr(u8"没有选择任何文件。"));
|
|
}
|
|
}
|
|
|
|
void QMergeRasterProcessDialog::onRemovepushButtonClick(bool checked )
|
|
{
|
|
QList<QListWidgetItem*> selectedItems =this->ui.listWidgetRaster->selectedItems();
|
|
for (QListWidgetItem* item : selectedItems) {
|
|
delete this->ui.listWidgetRaster->takeItem(this->ui.listWidgetRaster->row(item));
|
|
}
|
|
}
|
|
|
|
void QMergeRasterProcessDialog::acceptclick()
|
|
{
|
|
QToolProcessBarDialog* processdialog = new QToolProcessBarDialog(this);
|
|
|
|
QVector<QString> infile(ui.listWidgetRaster->count());
|
|
QString outstring = ui.lineEditOutPath->text();
|
|
for (long i = 0; i < ui.listWidgetRaster->count(); i++) {
|
|
infile[i] = ui.listWidgetRaster->item(i)->text();
|
|
}
|
|
processdialog->show();
|
|
processdialog->showProcess(0.0,u8"合并影像");
|
|
|
|
MergeRasterProcess(infile, outstring, infile[0], MERGEMODE::MERGE_GEOCODING, false, processdialog);
|
|
processdialog->close();
|
|
}
|
|
|
|
void QMergeRasterProcessDialog::rejectclick()
|
|
{
|
|
this->close();
|
|
} |