接上次
//////////////////////////////////////////////////////
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(); //刷新文本流
}
欢迎批评