#include #include #include #include #include #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : 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() { 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(); }