QT txt读写—论坛体编辑器

  • 论坛体生成和编辑
    • 界面编辑
  • txt创建
  • txt读取
  • 内容添加
  • 保存文件

论坛体生成和编辑

创建一个输入id和内容后能自动加上论坛体格式的软件
主要需求:创建txt,读取txt,显示内容,为内容添加特定格式并保存

界面编辑

创建按钮后右键添加槽

txt创建

根据输入的标题创建txt文件,在未输入时弹出提示,并由用户自行选择创建路径。

void MainWindow::on_createButton_clicked()
{QString newName = ui->nameTextEdit->toPlainText();if(newName.isEmpty()){QMessageBox::about(NULL,"warning","请输入标题");return;}QString newfileName = newName.append(".txt");//读取用户输入的标题QDir tempDir;QString filePath = QFileDialog::getExistingDirectory(NULL,"caption",".");//用户选择路径QFile *tempFile = new QFile;tempDir.setCurrent(filePath);if(tempFile->exists(newfileName)){QMessageBox::about(NULL,"warning","文件存在");return ;}//检查filePath路径下是否存在文件fileName,如果停止操作。//此时,路径下没有fileName文件,使用下面代码在当前路径下创建文件tempFile->setFileName(newfileName);if(tempFile->open(QIODevice::ReadOnly|QIODevice::Text)){QMessageBox::about(NULL,"warning","创建成功");}fileName = tempFile->fileName(); //fileName为设置的全局变量tempFile->close();
}

txt读取

读取txt,并显示txt的名称和内容

void MainWindow::on_readButton_clicked()
{QString curPath = QDir::currentPath();QString dlgTitle = "Open the file";QString filter = "文本文件(*.txt)";QString aFileName = QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);fileName = aFileName; //fileName为设置的全局变量if (aFileName.isEmpty())return;openTextByIODevice(aFileName);
}bool MainWindow::openTextByIODevice(const QString &aFileName)
{//用IODevice方式打开文本文件QFile   aFile(aFileName);if (!aFile.exists()) //文件不存在return false;if (!aFile.open(QIODevice::ReadOnly | QIODevice::Text))return false;QTextCodec *codec = QTextCodec::codecForName("GBK");QString strAll=codec->toUnicode(aFile.readAll());//设置GBK,防止汉字显示为乱码ui->contentTextEdit->setPlainText(strAll);QString FileName = aFileName.mid(aFileName.lastIndexOf("/"));ui->nameTextEdit->setPlainText(FileName+1);//显示读取的文件的名称aFile.close();return  true;
}

内容添加

每一层的格式为

回复内容
№楼层数 ☆☆☆ ID 于 XXXX-XX-XX YY:YY:YY留言☆☆☆

读取面板中显示的内容并添加回复框中内容到文件中


void MainWindow::on_sendButton_clicked()
{if(fileName.isEmpty()){QMessageBox::about(NULL,"warning","请创建或读取文件");return;}//判断是否已经读取或创建文件QString id = ui->idTextEdit->toPlainText();QString reply = ui->replyTextEdit->toPlainText();QString article = ui ->contentTextEdit->toPlainText();QString fl = "0";if (article.contains("№")){int sitNo = article.lastIndexOf("№");QString lastReply = article.mid(sitNo+1);int sitStar = lastReply.indexOf("☆");QString st = lastReply.left(sitStar-1);int stg = st.toInt()+1;fl = QString::number(stg);}else {fl = "0";}//计算楼层数:读取显示内容中最后一个“№”符号的位置,截取从№到☆之间的内容QString content = reply.append("\n№").append(fl).append(" ☆☆☆ ").append(id).append(" XXXX-XX-XX YY:YY:YY留言☆☆☆\n\n");QString newArticle = article.append(content);ui->contentTextEdit->setPlainText(newArticle);//添加回复内容QFile aFile(fileName);if (!aFile.open(QIODevice::WriteOnly | QIODevice::Text))return;QTextStream aStream(&aFile); //用文本流读取文件QString str=ui->contentTextEdit->toPlainText(); //转换为字符串aStream<<str; //写入文本流ui->replyTextEdit->setPlainText("");aFile.close();//关闭文件
}

保存文件

保存txt文件

void MainWindow::on_saveButton_clicked()
{if(fileName.isEmpty()){QMessageBox::about(NULL,"warning","请创建或读取文件");return;}QFile aFile(fileName);if (!aFile.open(QIODevice::WriteOnly | QIODevice::Text))return;QTextStream aStream(&aFile); //用文本流读取文件QString str=ui->contentTextEdit->toPlainText(); //转换为字符串qDebug()<<str<<endl;
//  aFile.write(strBytes,strBytes.length());aStream<<str; //写入文本流aFile.close();//关闭文件QMessageBox::about(NULL,"warning","保存成功");
}

QT txt读写—论坛体编辑器相关推荐

  1. QT 使用数据流方式QDataSteam读写结构体数据

    文章目录 一.QT中保存单个变量到文件中 二.使用memcpy读写结构体数据 一.QT中保存单个变量到文件中 在QT中使用QDateStream进行数据流文件读写,保存数据(QT帮助中的例子). Ex ...

  2. qt linux excel文件读取显示,qt中写入excle?QT怎样读写excel-CSDN论坛

    如何通过Qt 创建一个excel文件 首先,我们打开前文所的工目. 然后,我们在界面设计,加入一个label用于显示,要保存的目录.注意设置下相应的界面布局. 然后,我们在mainwindow.h类中 ...

  3. Qt——txt文件选择、读取与写入

    文件选择 #include <QFileDialog> QString fileName = QFileDialog::getOpenFileName(this,tr("选择日志 ...

  4. C# OPCUA 读写结构体

    OPCUA结构体的读写说白了就是对ExtensionObject中按规则对byte的转换 读取步骤: 1.首先可以先用UAExpert查看结构体 2.读取出结构体DataValue的值 3.把读取出来 ...

  5. QT:复杂结构体不同窗口间传递

    QT:复杂结构体不同窗口间传递(父传子,子传父) (父传子) 在写程序时,难免会碰到多窗体之间进行传值的问题,今天主要谈一下复杂结构体传值的问题(网上有很多博客,看的头疼,本篇进行详细解读). 具体原 ...

  6. ue4 改变枢轴位置_UE4虚幻引擎学习云笔记(五)-静态网格体编辑器

    [五.静态网格体编辑器(Static Mesh Editor)] 19-09-26 静态网格体编辑器一般用以分配材质至静态网格体,每个LOD可以有不同材质. 静态网格体编辑器(Static Mesh ...

  7. QT QWebEngineView+UEditor富文本编辑器

    QT QWebEngineView+UEditor富文本编辑器 一.简述 记--简单使用QWebEngineView+UEditor富文本编辑器实现一个简单的编辑器,支持图片(支持右键粘贴,支持直接拖 ...

  8. c++ qt 二进制文件读写

    在上一章中,我们介绍了有关QFile和QFileInfo两个类的使用.我们提到,QIODevice提供了read().readLine()等基本的操作.同时,Qt 还提供了更高一级的操作:用于二进制的 ...

  9. Qt Design Studio的3D编辑器

    本文翻译自:Meet Qt Design Studio 3D Editor 原文作者:Mahmoud Badri 校审:Richard Lin 在Qt Design Studio 1.4中,我们首次实 ...

  10. 齐鲁工大青年论坛“体感与移动应用开发”举办

            为使同学们进一步了解移动软件开发应用问题,6月9日晚,由齐鲁工业大学CSDN高校俱乐部主办的工大青年论坛"体感与移动应用开发"在行政楼报告厅举办.山西.NET俱乐部 ...

最新文章

  1. msvc2013编译qt5.6源码
  2. iOS点击推送消息跳到应用指定页面
  3. Struts2的Stack Context和ValueStack
  4. [Android]发布Sqlite数据库
  5. java 静态变量 new_java中静态对象和普通变量在初始化静态变量的时候有什么区别??高手!!...
  6. 说说我心中的Linux系统
  7. day10-包的定义和内部类
  8. Studio启动的时候报错 Could not install Gradle distribution from
  9. HSRP+生成树+vlan间路由!
  10. 隐秘攻击:恶意病毒可使智能手机加速老化
  11. Shell date连接mysql执行指令
  12. vue怎么和python后端交互_python爬虫与Django框架vue交互的前后端代码详情(励志人生网实例)...
  13. 人人开源项目前端添加静态路由
  14. ps矩形框的宽高值如何显示像素单位
  15. 成都及周边景点5日游
  16. 新手入门—递归实现指数型枚举
  17. API大全 汇总(转载)
  18. centos7搭建hexo博客步骤
  19. 【华为云CCE】 k8s部署nacos集群
  20. 周一见!距离阿里巴巴开源开放周还有3天

热门文章

  1. SDKD 2021 C3 7th Round
  2. 太阳的光和灯光有什么区别_太阳光和灯光有什么区别
  3. gerrit 怎么不abandon修改提交
  4. win7 命令行开启WiFi
  5. 子空间的投影矩阵推导过程及其性质
  6. 计算机多显器设置方法,一个电脑多个显示器怎么设置
  7. 8255并行接口与交通灯控制
  8. DirectX12 3D游戏开发实践(龙书)第六章 利用Direct3D的绘制几何体
  9. 在水晶报表中实现任意选择指定字段显示 (阿泰)
  10. 无盘 电影服务器,网吧电影服务器解决方案完全攻略指南