• 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(); }
  • 相关阅读:
    调用Android自带日历功能
    android使用全局变量传递数据
    安卓高手之路之java层Binder
    无刷新实时获得数据
    Android画图之抗锯齿
    android 定时器的实现
    将apk文件添加到Android模拟器(AVD)中运行
    Android 屏幕自适应方向尺寸
    经常用得到的安卓数据库基类
    android系统特效详解和修改方法
  • 原文地址:https://www.cnblogs.com/lnlin/p/7798987.html
Copyright © 2020-2023  润新知