QT实现文本的读写

[复制链接]
发表于 2026-1-28 02:14:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
利用QT读写文件

来,在步调中文件的读写优劣常紧张的,毕竟我们在大多数时间都是要访问文本文件的,那么本日就来学习一下怎么利用QT来读写文件。
1.写界面

直接在ui界面中编辑即可

布局小本领我们先选择两个按钮,然后水平布局,然后将textedit拖进来,在右上角对象查察器中选择Widget对象后,点击垂直布局即可!!!
2.流程陈诉

我们假如要打开文件我们有四个步调
1.找到文件

我用文心一言给各人具体解释了一下…^-^
  1. // 引入Qt的文件对话框和文件操作相关的头文件  
  2. #include <QFileDialog>  
  3. #include <QFile>  
  4. #include <QDebug>  
  5.   
  6. // 假设这是某个类的一个成员函数,其中file是一个QFile对象的成员变量  
  7. // 或者,如果这段代码不在成员函数内部,那么file需要是一个局部变量或者通过其他方式获得  
  8.   
  9. // 使用QFileDialog的静态函数getOpenFileName来弹出一个文件选择对话框  
  10. // this指针表示这个对话框的父窗口(在Qt中,窗口和对话框通常有父子关系,以便管理它们的显示和销毁)  
  11. // "选择文件"是对话框的标题  
  12. // ""是初始目录,留空表示使用当前目录  
  13. // 函数返回用户选择的文件名(包括路径),如果用户取消则返回一个空QString  
  14. QString FileName = QFileDialog::getOpenFileName(this,"选择文件","");  
  15.   
  16. // 检查是否成功选择了文件(即FileName不是空字符串)  
  17. if (!FileName.isEmpty()) {  
  18.     // 使用用户选择的文件名来设置QFile对象的文件名  
  19.     file.setFileName(FileName);  
  20.   
  21.     // 尝试以读写模式打开文件  
  22.     // QIODevice::ReadWrite标志表示同时允许读写操作,但请注意,并非所有文件系统都支持同时读写  
  23.     // 如果文件不存在,某些文件系统(如Windows)可能允许你以ReadWrite模式打开文件进行写入  
  24.     if(!file.open(QIODevice::ReadWrite)){  
  25.         // 如果文件打开失败,则输出错误信息  
  26.         qDebug()<<"打开文件失败";  
  27.   
  28.         // 这里可以添加额外的错误处理代码,比如通知用户或尝试其他操作  
  29.   
  30.         // 记住,在出错后最好关闭文件(如果之前尝试打开过),但在这个例子中,由于文件没有成功打开,  
  31.         // 所以不需要显式调用file.close()。不过,如果在其他地方文件成功打开,但在后续操作中出错,  
  32.         // 那么确保在出错后关闭文件是个好习惯。  
  33.     }  
  34.     // 如果文件成功打开,接下来的代码可以在这里处理文件  
  35.     // ...  
  36.   
  37.     // 在处理完文件后,不要忘记关闭文件  
  38.     // file.close();  
  39. } else {  
  40.     // 如果用户没有选择文件(即点击了取消),可以在这里处理  
  41.     qDebug() << "没有选择文件";  
  42. }  
  43.   
复制代码
 
2.打开文件

这是打开文件按钮的转到槽的信号函数,
  1. void Widget::on_pushButton_2_clicked()
  2. {
  3.     QString FileName = QFileDialog::getOpenFileName(this,"选择文件","");
  4.     file.setFileName(FileName);
  5.     if(!file.open(QIODevice::ReadWrite)){
  6.         qDebug()<<"打开文件失败";
  7.     }
  8.     ui->textEdit->setPlainText(file.readAll());
  9.     file.close();
  10. }
复制代码
 
3.访问文件

 file.write(ui->textEdit->toPlainText().toUtf8());//作用:将textEdit中体现的文本写回到这个文件中
4.关闭文件

关闭按钮的信号就是写回,并将textEdit清空
  1. void Widget::on_pushButton_clicked()
  2. {
  3.     if(file.fileName().isNull()){
  4.         return;
  5.     }
  6.     if(!file.open(QIODevice::ReadWrite)){
  7.         qDebug()<<"错误";
  8.         return;
  9.     }
  10.     file.write(ui->textEdit->toPlainText().toUtf8());
  11.     ui->textEdit->clear();
  12.     file.close();
  13. }
复制代码
留意:利用之前要在 widget.h的文件中应用QFile的头文件,并在下面界说QFile file。

我照旧写出来吧:
 
  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include"QFile"/////这里
  5. QT_BEGIN_NAMESPACE
  6. namespace Ui {
  7. class Widget;
  8. }
  9. QT_END_NAMESPACE
  10. class Widget : public QWidget
  11. {
  12.     Q_OBJECT
  13. public:
  14.     Widget(QWidget *parent = nullptr);
  15.     ~Widget();
  16. private slots:
  17.     void on_pushButton_2_clicked();
  18.     void on_pushButton_clicked();
  19. private:
  20.     Ui::Widget *ui;
  21.     QFile file;/////这里
  22. };
  23. #endif // WIDGET_H
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表