QT开发一个图片名批量重命名程序
时间: 2024-06-05 17:07:24 浏览: 101
好的,我了解您的要求,并可以为您提供一些指导。首先,您可以使用QT中的QDir类来获取指定文件夹内的所有图片文件名。然后,您可以使用QFile类和QTextStream类来读取和修改文件名。具体的重命名方法可以根据您的需求来确定,例如增加前缀、后缀、修改文件名等等。希望这些信息能够帮助到您,有其他问题可以随时问我哦。
相关问题
QT开发一个图片名批量重命名界面程序示例
好的,您可以参考以下代码:
```cpp
#include <QApplication>
#include <QDir>
#include <QFileDialog>
#include <QFileInfo>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QMessageBox>
#include <QPushButton>
#include <QRegExp>
#include <QString>
#include <QVBoxLayout>
class BatchRenameWidget : public QWidget {
Q_OBJECT
public:
BatchRenameWidget(QWidget *parent = nullptr);
private slots:
void onChoosePathButtonClicked();
void onRenameButtonClicked();
private:
void renameFiles();
QHBoxLayout *pathLayout_;
QLabel *pathLabel_;
QLineEdit *pathLineEdit_;
QPushButton *choosePathButton_;
QLabel *patternLabel_;
QLineEdit *patternLineEdit_;
QVBoxLayout *mainLayout_;
QHBoxLayout *buttonLayout_;
QPushButton *renameButton_;
QPushButton *cancelButton_;
};
BatchRenameWidget::BatchRenameWidget(QWidget *parent)
: QWidget(parent),
pathLayout_(new QHBoxLayout),
pathLabel_(new QLabel(tr("文件夹路径: "))),
pathLineEdit_(new QLineEdit),
choosePathButton_(new QPushButton(tr("选择文件夹"))),
patternLabel_(new QLabel(tr("文件名规则: "))),
patternLineEdit_(new QLineEdit),
mainLayout_(new QVBoxLayout),
buttonLayout_(new QHBoxLayout),
renameButton_(new QPushButton(tr("重命名"))),
cancelButton_(new QPushButton(tr("取消"))) {
pathLayout_->addWidget(pathLabel_);
pathLayout_->addWidget(pathLineEdit_);
pathLayout_->addWidget(choosePathButton_);
mainLayout_->addLayout(pathLayout_);
mainLayout_->addWidget(patternLabel_);
mainLayout_->addWidget(patternLineEdit_);
buttonLayout_->addStretch();
buttonLayout_->addWidget(renameButton_);
buttonLayout_->addWidget(cancelButton_);
mainLayout_->addLayout(buttonLayout_);
setLayout(mainLayout_);
connect(choosePathButton_,
SIGNAL(clicked(bool)),
this,
SLOT(onChoosePathButtonClicked()));
connect(renameButton_, SIGNAL(clicked(bool)), this, SLOT(onRenameButtonClicked()));
connect(cancelButton_, SIGNAL(clicked(bool)), this, SLOT(close()));
}
void BatchRenameWidget::onChoosePathButtonClicked() {
QString path = QFileDialog::getExistingDirectory(this,
tr("选择文件夹"),
QDir::homePath(),
QFileDialog::ShowDirsOnly);
if (!path.isEmpty()) {
pathLineEdit_->setText(path);
}
}
void BatchRenameWidget::onRenameButtonClicked() {
QDir path(pathLineEdit_->text());
if (!path.exists() || !path.isReadable()) {
QMessageBox::warning(this, tr("警告"), tr("文件夹不存在或者无法读取"));
return;
}
QRegExp rx(patternLineEdit_->text());
if (!rx.isValid()) {
QMessageBox::warning(this, tr("警告"), tr("规则表达式不正确"));
return;
}
QStringList fileList = path.entryList(QDir::Files | QDir::NoDotAndDotDot);
for (const QString &fileName : fileList) {
QFileInfo fileInfo(fileName);
QString newName = fileInfo.dir().path() + '/' + rx.cap(1) + fileInfo.suffix();
QFile::rename(fileInfo.filePath(), newName);
}
QMessageBox::information(this, tr("提示"), tr("文件批量重命名成功"));
close();
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
BatchRenameWidget batchRenameWidget;
batchRenameWidget.show();
return app.exec();
}
#include "main.moc"
```
这是一个使用Qt编写的文件批量重命名程序,可以选择一个文件夹并设置文件名规则,程序会根据规则对文件夹中的所有文件进行重命名操作。
阅读全文