
#include "mainwindow.h"
#include "ui_mainwindow.h"
QTableWidgetItem* getTableWidgetItem(QTableWidget*table,int row ,int column,int alignment)
{
QTableWidgetItem* pItem = table->item(row,column);
if(pItem == 0)
{
pItem = new QTableWidgetItem();
pItem->setTextAlignment(alignment);
pItem->setFont(table->font());
table->setItem(row, column, pItem);
}
return pItem;
}
QTableWidgetItem* setTableWidgetItem(QTableWidget*table,int row ,int column,QString text,int alignment=Qt::AlignCenter)
{
QTableWidgetItem* pItem = getTableWidgetItem(table,row,column,alignment);
if(pItem != 0)
{
pItem->setText(text);
pItem->setTextAlignment(alignment);
}
return pItem;
}
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->tableWidget->setColumnCount(2);
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
QStringList hear;
hear <<"名字"<< "行数";
}
MainWindow::~MainWindow()
{
delete ui;
}
int getDirLineCount(QString dirStr,QList<QStringList>& contextList)
{
int lineCount = 0;
QDir dir = QDir(dirStr);
dir.setFilter(QDir::Dirs | QDir::Files);
dir.setSorting(QDir::DirsFirst);
QFileInfoList list = dir.entryInfoList();
for(int i =0; i < list.count();i++)
{
QFileInfo fileInfo = list.at(i);
if (fileInfo.fileName() == QString(".") || fileInfo.fileName() == QString(".."))
{
continue;
}
if (fileInfo.isFile())
{
{
QStringList infoList;
int eNum = 0;
QString path = fileInfo.absoluteFilePath();
QFile file(path);
if (file.open(QIODevice::ReadOnly))
{
while (!file.atEnd())
{
QByteArray tmp = file.readLine();
{
eNum++;
}
}
file.close();
}
lineCount += eNum;
infoList << fileInfo.fileName() << QString::number(eNum);
contextList.append(infoList);
}
}
if (fileInfo.isDir())
{
lineCount += getDirLineCount(fileInfo.absoluteFilePath(), contextList);
}
}
QStringList infoList;
infoList << dir.dirName() << QString::number(lineCount);
contextList.append(infoList);
return lineCount;
}
void MainWindow::on_pushButton_clicked()
{
QString dirStr = QFileDialog::getExistingDirectory(this,"请选择计算路径...","./");
if(dirStr.isEmpty())
{
return;
}
ui->lineEdit->setText(dirStr);
QList<QStringList> contextList;
getDirLineCount(dirStr, contextList);
ui->tableWidget->setRowCount(contextList.count());
for(int i =0 ; i < contextList.count(); i++)
{
setTableWidgetItem(ui->tableWidget, i, 0, contextList[i][0]);
setTableWidgetItem(ui->tableWidget, i, 1, contextList[i][1]);
}
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileDialog>
#include <QTableWidgetItem>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif