Qt 实例3 读取txt文件

通过简单实例小程序,实现txt文件读取展示。

1、创建工程并进行界面设计。创建基于QWidget基类的Qt界面应用程序,并在主界面添加相关控件如下:

界面控件依次为:QLabel、QLineEdit、QPushButton、QTextEdit。

2、创建并绑定槽函数

.h头文件创建槽函数:

private slots:
    void slotReadTxt();

.cpp源文件构造函数内绑定槽函数

connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(slotReadTxt()));

3、槽函数实现

void Widget::slotReadTxt()
{
    QString fileName = QFileDialog::getOpenFileName(nullptr,"Open",QApplication::applicationDirPath(),"*.txt;;*.*");
    if(fileName.isEmpty())
        return;

    ui->lineEdit->setText(fileName);
    QFile file(fileName);
    if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
    {
        QMessageBox::warning(nullptr,"Warning","Open file failed!");
        return;
    }

    QTextStream text(&file);
    while (!text.atEnd()) {
        QString strLine = text.readLine();
        ui->textEdit->append(QString::fromUtf8(strLine.toLocal8Bit()));
    }
}

4、运行程序,并点击按钮选取txt文本文件,进行内容读取并展示在文本框中。

附:完整源码如下(main函数不再展示):

.h头文件

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT
public:

    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void slotReadTxt();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

.cpp源文件

#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QTextStream>
#include <QMessageBox>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(slotReadTxt()));
}

Widget::~Widget()
{
    delete ui;
}

void Widget::slotReadTxt()
{
    QString fileName = QFileDialog::getOpenFileName(nullptr,"Open",QApplication::applicationDirPath(),"*.txt;;*.*");
    if(fileName.isEmpty())
        return;

    ui->lineEdit->setText(fileName);
    QFile file(fileName);
    if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
    {
        QMessageBox::warning(nullptr,"Warning","Open file failed!");
        return;
    }

    QTextStream text(&file);
    while (!text.atEnd()) {
        QString strLine = text.readLine();
        ui->textEdit->append(strLine);
    }
}

后续公众号会发布系列教程,更多内容请关注公众号:程序猿学习日记

  • 4
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个使用Qt多线程读取txt数据的示例: ```cpp #include <QCoreApplication> #include <QThread> #include <QFile> #include <QDebug> class FileReader : public QObject { Q_OBJECT public: FileReader(QString fileName) : m_fileName(fileName) {} public slots: void readFile() { QFile file(m_fileName); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qWarning() << "Could not open file:" << m_fileName; return; } QTextStream in(&file); while (!in.atEnd()) { QString line = in.readLine(); // Process the line here qDebug() << line; QThread::msleep(10); // Simulate some work } file.close(); } private: QString m_fileName; }; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QString fileName = "test.txt"; QThread thread; FileReader reader(fileName); reader.moveToThread(&thread); QObject::connect(&thread, &QThread::started, &reader, &FileReader::readFile); QObject::connect(&reader, &FileReader::finished, &thread, &QThread::quit); QObject::connect(&reader, &FileReader::finished, &reader, &FileReader::deleteLater); QObject::connect(&thread, &QThread::finished, &thread, &QThread::deleteLater); thread.start(); return a.exec(); } #include "main.moc" ``` 在上面的示例中,我们创建了一个 `FileReader` 类,它是一个 `QObject`,并且有一个 `readFile()` 槽函数,用于读取指定的文件。然后,在 `main()` 函数中,我们创建了一个 `QThread` 和一个 `FileReader` 实例,并将 `FileReader` 移动到线程中。最后,我们建立了一些信号与槽连接,以便在线程启动时调用 `readFile()` 函数,并在完成时清理线程和 `FileReader`。 注意,由于文本文件读取是一个相对耗时的操作,我们在 `readFile()` 函数中使用 `QThread::msleep()` 函数模拟一些工作。实际上,你应该根据需要进行操作,以确保不会阻塞主线程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值