Qt+QFile+QFileDialog处理多文件行数统计及有效行判定Demo
来源:互联网 发布:网络侦探 丁香兽 编辑:程序博客网 时间:2024/06/05 23:57
先看一下效果:
注意关键代码:
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();}
阅读全文
0 0
- Qt+QFile+QFileDialog处理多文件行数统计及有效行判定Demo
- 统计有效行数
- 统计代码有效行数
- Qt文件读取之QFile
- Qt之文件操作 QFile
- QT QFile删除文件失败
- Qt拷贝文件、文件夹(QFile::copy)
- 【转】Qt之文件操作 QFile
- Qt拷贝文件、文件夹(QFile::copy)
- Qt拷贝文件、文件夹(QFile::copy)
- 【转】Qt之文件操作 QFile
- 笔记:Qt中的QFile(读写文件)
- Qt之文件操作QFile于QFileInfo
- Qt中读写文件的内容-------QFile
- Qt拷贝文件、文件夹(QFile::copy)
- Qt中 文件对话框QFileDialog 的使用
- Qt中 文件对话框QFileDialog 的使用
- QT——文件对话框QFileDialog
- 构件截面显示
- [整理][转载][正在更新]Articles marked
- hodoop中使用MapReduce实例
- 多个文件压缩下载
- Android-4.4.2 编译出错 OSError: [Errno 2] No such file or directory
- Qt+QFile+QFileDialog处理多文件行数统计及有效行判定Demo
- linux(centos7)上安装使用RabbitMQ
- tensorflow 问题与解决
- Vuex 学习笔记
- 聊聊近况
- QT 进行md5加密
- 23、解释器模式(Interpreter)
- 详解Mysql中的JSON系列操作函数
- 笔记40 | Android通讯之Intent的简单使用