⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 convertwidget.cpp

📁 本文件是<精通QT4编程>的配套源代码
💻 CPP
字号:
#include <QtGui>
#include "ConvertWidget.h"

ConvertWidget::ConvertWidget(QWidget *parent)
 : QWidget(parent)
{
	setupUi(this);
	txtSource->setText(QDir::currentPath());
	srcCodec = QTextCodec::codecForName("GB18030-0");
	destCodec = QTextCodec::codecForName("UTF-8");
}

ConvertWidget::~ConvertWidget()
{
}

void ConvertWidget::on_btnConvert_clicked()
{
	/*QString filter = txtFilter->text();
	QStringList filters = filter.split(",", QString::SkipEmptyParts);
	QDirIterator it(txtSource->text(), filters, QDir::AllEntries, QDirIterator::Subdirectories);*/
	
	QFile srcFile, dstFile;
	QTextStream in, out;
	QString fileName, dstFileName, tmpStr;
	QDirIterator it(txtSource->text(), QDirIterator::Subdirectories);
	 while (it.hasNext()) {
	     fileName = it.next();
	     //QDirIterator总是返回/分隔符
	     fileName.replace("/", QDir::separator());
	     if(fileName.endsWith(".h") || fileName.endsWith(".cpp"))
	     {
	         srcFile.setFileName(fileName);
	         if (!srcFile.open(QFile::ReadOnly | QFile::Text)) {
	             QMessageBox::warning(this, tr("错误"),
	                                  tr("不能打开文件%1:\n%2")
	                                  .arg(fileName)
	                                  .arg(srcFile.errorString()));
	             return;
	         }

	         in.setDevice(&srcFile);
	         in.setAutoDetectUnicode(false);
	         in.setCodec(srcCodec);
	         tmpStr = in.readAll();

	         dstFileName = txtDest->text() + QDir::separator() + 
    		 	fileName.mid(fileName.lastIndexOf(QDir::separator())+1);
	         dstFileName.replace("/", QDir::separator());
	         dstFile.setFileName(dstFileName);
	         if (!dstFile.open(QFile::WriteOnly | QIODevice::Truncate | QFile::Text)) {
	             QMessageBox::warning(this, tr("错误"),
	                                  tr("不能打开文件%1:\n%2")
	                                  .arg(dstFileName)
	                                  .arg(dstFile.errorString()));
	             return;
	         }
	         
	         out.setDevice(&dstFile);
	         out.setCodec(destCodec);
	         out << tmpStr;
	         srcFile.close();
	         dstFile.close();
	     }
	 }
	 QMessageBox::information(this, tr("提示"), tr("转换完毕!"));
}

void ConvertWidget::on_btnExit_clicked()
{
	close();
}

void ConvertWidget::on_btnSource_clicked()
{
	 QString dir = QFileDialog::getExistingDirectory(this, tr("选择源目录"),
	                                                 txtSource->text(),
	                                                 QFileDialog::ShowDirsOnly
	                                                 | QFileDialog::DontResolveSymlinks);
	 txtSource->setText(dir);
}

void ConvertWidget::on_btnDest_clicked()
{
	 QString dir = QFileDialog::getExistingDirectory(this, tr("选择目的目录"),
	                                                 txtDest->text(),
	                                                 QFileDialog::ShowDirsOnly
	                                                 | QFileDialog::DontResolveSymlinks);
	 txtDest->setText(dir);	
}

void ConvertWidget::on_radioGBToUTF_clicked()
{
	srcCodec = QTextCodec::codecForName("GB18030-0");
	destCodec = QTextCodec::codecForName("UTF-8");
}

void ConvertWidget::on_radioUTFToGB_clicked()
{
	srcCodec = QTextCodec::codecForName("UTF-8");
	destCodec = QTextCodec::codecForName("GB18030-0");	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -