qt_简易记事本_2

接上次

//

QTexrDocument:存放结构化的富文本

QTextEdit *edit;

edit->document()->isModified()  //文本内容是否被修改(打开文件、保存文件的时候 用来判断文件是否改变从而提示是否保存)

edit->clear() //清空文本区的内容

//

QFileDialog: 标准对话框——文件对话框

QString file_path;

下面是一个打开文件<将文件中的内容读出来,后面还有一个写文件,将文本区中的内容写到一个文件中>

QFileDialog::getOpenFileName()  //一个打开文件对话框

file_path = QFileDialog::getOpenFileName(this,"此处为文件对话框的标题","打开的目录路径QString","文本文档(*.txt);;所有文件(*.*)") //最后一个参数为 文件的类型

//返回一个字符串 就是打开的文件的路径

下面的这句话:

file_path = QFileDialog::getOpenFileName(this, "打开", "C:\\Users\\dell1\\Desktop", "文本文档(*.txt);;所有文件(*.*)");

效果:

当没有点击文件对话框中的 打开 而点击了取消 或者是 右上角的X 的时候 则file_path 为空 这时候需要使用file_path.isEmpty() 进行判断打开的文件路径是否为空

if ( ! file_path.isEmpty() )
  {
   QFile file_will_open(file_path);    //创建一个文件对象 使用文件的路径进行构造
   file_will_open.open(QIODevice::ReadWrite);  //文件的打开方式  这里是读写打开
   QTextStream write_file(&file_will_open); //文本流 参数是文件对象指针
   edit->setText(write_file.readAll()); //文本流的成员函数 readAll() 读出所有的文本 edit->setText() 设置文本区中的文本
   file_will_open.close(); //关闭文件
   write_file.flush(); //刷新文本流

}

//

QTextCursor: 光标类

edit_cursor = edit->textCursor()  //获取文本区中的光标 返回一个对象

movePosition()   //一共光标的位置

                           //QTextCursor::End (文本区的末尾),QTextCursor::Start(文本区的开始)

                           //QTextCursor::MoveAnchor (最基础的移动), QTextCursor::KeepAnchor(光标移动过的文本都会被选中)

上面的光标移动只是光标位置的变化 文本区中的光标还没有移动  想想毕竟返回的不是指针嘛

所以需要edit->setTextCursor(edit_cursor); //设置文本区的光标为移动后的光标 这样文本区的光标才会变化

//

将文本区的内容写到文件中去

QFileDialog::getSaveFileName() //一个保存文件对话框

QString save_file_path = QFileDialog::getSaveFileName(this, "保存至", "h:\\C语言练习\\", "文本文件(*.txt);;所有文件(*.*)"); //和上面的打开文件对话框参数含义一样

当没有点击文件对话框中的 打开 而点击了取消 或者是 右上角的X 的时候 则file_path 为空 这时候需要使用file_path.isEmpty() 进行判断打开的文件路径是否为空

效果:

  if (!save_file_path.isEmpty()) //文件路径不为空 才能进行保存 并且清空相关信息
  {
   QFile save_new_file(save_file_path);  //同上
   save_new_file.open(QFile::WriteOnly); //只写打开
   QTextStream out(&save_new_file);
   out << edit->toPlainText(); //toPlainText()获得文本区中的字符串 返回QString对象 文本流类重载了<<运算符  这样直接将含有文本区内容的QString 写到文件中
   save_new_file.close(); //关闭文件
   out.flush(); //刷新文本流
  }

欢迎批评

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值