Qt+QFile+QFileDialog处理多文件行数统计及有效行判定Demo
2017-11-23 16:48
555 查看
先看一下效果:
注意关键代码:
QFileDialog提供的setFileMode方法Qt提供了几种情况:(我做的Demo中是可以进行多个文件选择的)
enum FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly };
注意,我的Demo是根据我的具体需求订的无效行,你可以自己定义无效行的规则。
源码如下:
注意关键代码:
m_fileDialog = new QFileDialog(this); m_fileDialog->setWindowTitle(tr("Open")); m_fileDialog->setDirectory("."); m_fileDialog->setNameFilter(tr("Files(*.txt)")); m_fileDialog->setFileMode(QFileDialog::ExistingFiles);
QFileDialog提供的setFileMode方法Qt提供了几种情况:(我做的Demo中是可以进行多个文件选择的)
enum FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly };
注意,我的Demo是根据我的具体需求订的无效行,你可以自己定义无效行的规则。
源码如下:
#include "widget.h" #include "ui_widget.h" #include <QDebug> #include <QFile> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); m_fileDialog = new QFileDialog(this); m_fileDialog->setWindowTitle(tr("Open")); m_fileDialog->setDirectory("."); m_fileDialog->setNameFilter(tr("Files(*.txt)")); m_fileDialog->setFileMode(QFileDialog::ExistingFiles); m_fileDialog->hide(); } Widget::~Widget() { delete ui; } void Widget::on_openFile_clicked() { m_fileDialog->show(); if(m_fileDialog->exec() == QDialog::Accepted) { QStringList files = m_fileDialog->selectedFiles(); int allD = files.count(); int allH = 0; int allBad = 0; for(int i = 0; i < allD; i++) { QString path = files[i]; qDebug() << "path:" << path; QStringList list; int eNum = 0; QFile file(path); if (file.open(QIODevice::ReadOnly)) { while (!file.atEnd()) { QByteArray tmp = file.readLine(); list<<tmp; if(tmp.isEmpty() || tmp.split(',').first().isEmpty()) { eNum++; } } file.close(); } int gTmp = list.count() - eNum; allH += list.count(); allBad += eNum; QFileInfo info(path); QString str = QString("%1行数: %2, 无效\350\241\214\346\225\260: %3, 有效行数: %4").arg(info.fileName()) .arg(QString::number(list.count())).arg(QString::number(eNum)).arg(QString::number(gTmp)); ui->treeWidget->addTopLevelItem(new QTreeWidgetItem(QStringList() << str)); } ui->label->setText(QString("文件\350\241\214\346\225\260: %0, \346\211\200\346\234\211\350\241\214\346\225\260: %1, \346\234\211\346\225\210\350\241\214\346\225\260: %2, \346\227\240\346\225\210\350\241\214\346\225\260: %3").arg(QString::number(allD)) .arg(QString::number(allH)).arg(QString::number(allH-allBad)).arg(QString::number(allBad))); // 文件数: , 所有行数: , 有效行数: , 无效行数: } } void Widget::on_clearBtn_clicked() { ui->treeWidget->clear(); }
相关文章推荐
- SQL SERVER统计服务器所有的数据库(数据库文件)、表(表行数)、字段(各字段)等详细信息
- Python 多进程统计所有csv文件的行数
- 统计文件行数
- 统计文件的行数
- 3.17 统计文件的行数、单词数和字符数
- fgets统计文件行数
- Linux统计文件行数
- MapReduce-Counter使用-快速实现大文件行数的统计
- Visual Studio统计有效代码行数
- wc命令--Linux统计文件行数
- 读取磁盘中的文件,并统计行数
- Qt 打开文件的默认路径 QFileDialog::getOpenFileName()
- Qt 打开文件的默认路径 QFileDialog::getOpenFileName()
- Qt之文件操作QFile于QFileInfo
- 读文件时,统计行数,为何比实际的多一行
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- 统计目录中文件的行数
- Linux统计文件行数
- 统计java代码文件的代码行数(空行、注释不能计数)
- Linux统计文件行数、字数、字节数