完成文件读取

This commit is contained in:
2024-09-18 10:25:29 +08:00
parent f4e058c009
commit d9cdba7cb7
10 changed files with 435 additions and 57 deletions

View File

@ -1,22 +1,99 @@
#include <QFileDialog>
#include <QMessageBox>
#include <QDebug>
#include <QCompleter>
#include <QLabel>
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QCompleter>
#include <QListView>
#include <QStyledItemDelegate>
#include <QLineEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
: QMainWindow(parent), ui(new Ui::MainWindow), readThread(new ReadThread) {
ui->setupUi(this);
// 创建版本号标签并添加到状态栏的右端
QLabel *m_versionLabel = new QLabel(tr("v1.2.0"), this);
ui->statusbar->addPermanentWidget(m_versionLabel);
//隐藏进度条
ui->progressBar->close();
/*信号和槽*/
//readThread
connect(readThread, &ReadThread::clearCombo, this, &MainWindow::clearCombo);
connect(readThread, &ReadThread::showStatusbar, this, &MainWindow::showStatusbar);
connect(readThread, &ReadThread::setProgressBar, this, &MainWindow::setProgressBar);
connect(readThread, &ReadThread::setBeginTime, this, &MainWindow::setBeginTime);
connect(readThread, &ReadThread::setEndTime, this, &MainWindow::setEndTime);
connect(readThread, &ReadThread::addCombo, this, &MainWindow::addCombo);
connect(readThread, &ReadThread::closeProg, this, &MainWindow::closeProg);
}
MainWindow::~MainWindow()
{
MainWindow::~MainWindow() {
delete ui;
}
void MainWindow::on_openFileBtn_clicked() {
//选择文件,并获取文件名
QString fileName = QFileDialog::getOpenFileName();
//打开文件
file.setFileName(fileName);
//打开失败
if (!file.open(QIODevice::ReadOnly)) {
QMessageBox::warning(this, "错误", "文件打开失败");
ui->statusbar->clearMessage();
clearCombo();
return;
}
//获取文件大小
qint64 fileSize = file.size();
//设置进度条
ui->progressBar->setMaximum((int) fileSize);
ui->progressBar->setValue(0);
ui->progressBar->show();
//执行读取
readThread->start();
}
void MainWindow::on_timeCustomBtn_clicked() {
ui->progressBar->close();
}
void MainWindow::on_dataCustomBtn_clicked() {
}
void MainWindow::clearCombo() {
ui->comboBox->clear();
}
void MainWindow::showStatusbar(const QString &str) {
ui->statusbar->showMessage(str);
}
void MainWindow::setProgressBar(int bytesRead) {
ui->progressBar->setValue(bytesRead);
}
void MainWindow::setBeginTime(const QDateTime &beginTime) {
ui->beginTimeEdit->setDateTime(beginTime);
}
void MainWindow::setEndTime(const QDateTime &endTime) {
ui->endTimeEdit->setDateTime(endTime);
}
void MainWindow::addCombo(const QStringList &names) {
//设置下拉框数据
ui->comboBox->addItems(names);
//根据输入匹配下拉框
completer = new QCompleter(names);
completer->setFilterMode(Qt::MatchContains);
ui->comboBox->setCompleter(completer);
}
void MainWindow::closeProg() {
ui->progressBar->close();
}