zoukankan      html  css  js  c++  java
  • Qt实现一个简单的TextEditor

    使用QT实现简单的TextEditor:

    首先在窗口添加部件TextEditor,并设置中文字符

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
    
        setCentralWidget(ui->textEdit);
    }

    具体的各种函数实现:

    // 用于在打开新建新文件时判断上一个正在编辑的文件是否被修改,并提示编辑者是否需要保存被修改后的内容。
    void MainWindow::AdvanceEditing() {
    if(ui->textEdit->document()->isModified()){ QMessageBox::StandardButton reply; reply = QMessageBox::information(this, "Yes/Not", "文件已被修改,是否要保存修改后的文件?", QMessageBox::Yes | QMessageBox::No); if(reply == QMessageBox::Yes){ Save(); // 如果需要保存,调用Save函数 } } } void MainWindow::New() // 创建新文件 { AdvanceEditing(); ui->textEdit->clear(); // 清屏 fileName = QFileDialog::getSaveFileName(this, "创建文件", "", tr("File(*.txt *.cpp *.h *.html *.htm)")); Save(); // 将新建的文件保存 } void MainWindow::Open() // 打开新文件 { AdvanceEditing(); fileName = QFileDialog::getOpenFileName(this, tr("打开文本文件"), "", tr("File(*.txt *.cpp *.h *.html *.htm)")); QFile myFile(fileName); if(!myFile.open(QIODevice::ReadOnly | QIODevice::Text)){ QMessageBox::warning(this, "警告", "打开文件失败!"); return; } QTextStream in(&myFile); QString m_Text = in.readAll(); ui->textEdit->clear(); if(fileName.endsWith("htm") || fileName.endsWith("html")){ ui->textEdit->setHtml(m_Text); } else{ ui->textEdit->setPlainText(m_Text); } ui->statusBar->showMessage("文件名:"+fileName); } void MainWindow::Save() // 保存文件 { QFile myFile(fileName); if(!myFile.open(QIODevice::WriteOnly | QIODevice::Text)){ QMessageBox::warning(this, "警告", "保存文件失败!"); return; } QTextStream out(&myFile); QString m_Text = ui->textEdit->toPlainText(); out << m_Text; // 将获取的textEdit中的内容写入文件 myFile.close(); } void MainWindow::on_actionNew_triggered() { New(); } void MainWindow::on_actionOpen_triggered() { Open(); } void MainWindow::on_actionSave_triggered() { Save(); } void MainWindow::on_actionQuit_triggered() { close(); }
  • 相关阅读:
    sql FLOAT字段使用like查询
    关于sql--时间范围查询重叠
    关于java时间类型比较
    前端-搜索无结果时,怎么把“暂无数据“显示出来?
    v-for动态赋值给不同的下拉框input
    Java的优先队列PriorityQueue详解
    软件体系架构阅读笔记八
    字符数组和字符串之间的转换
    Java快速输入输出
    软件体系架构阅读笔记七
  • 原文地址:https://www.cnblogs.com/lnlin/p/7798987.html
Copyright © 2011-2022 走看看