#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); buffer = new char[bufsize]; file = new QFile; } MainWindow::~MainWindow() { delete file; delete [] buffer; delete ui; } void MainWindow::on_actionOpen_triggered() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open File")); if (!fileName.isEmpty()) openFile(fileName); } void MainWindow::openFile(QString filePath) { ui->plainTextEdit->clear(); file->setFileName(filePath); if (file->open(QFile::ReadOnly)) QTimer::singleShot(10, this, SLOT(readFilePart())); startRead.start(); ui->plainTextEdit->viewport()->setCursor(Qt::WaitCursor); ui->plainTextEdit->setUpdatesEnabled(false); } void MainWindow::readFilePart() { qint64 bytesRead = file->read(buffer, bufsize - 1); buffer[bytesRead] = 0; ui->plainTextEdit->appendPlainText(buffer); qDebug() << "duration:" << startRead.elapsed() << ", bytesRead:" << bytesRead; if (bytesRead == bufsize - 1) QTimer::singleShot(10, this, SLOT(readFilePart())); else { qDebug() << "rest: {" << buffer << "}"; QTimer::singleShot(10, this, SLOT(closeFile())); } } void MainWindow::closeFile() { file->close(); ui->plainTextEdit->setUpdatesEnabled(true); ui->plainTextEdit->viewport()->unsetCursor(); }