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(); }
  • 相关阅读:
    Linux 内核源码中likely()和unlikely()【转】
    详解likely和unlikely函数【转】
    [arm驱动]Linux内核开发之阻塞非阻塞IO----轮询操作【转】
    Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现【转】
    Linux下的hrtimer高精度定时器【转】
    Linux 高精度定时器hrtimer 使用示例【转】
    Linux 进程等待队列【转】
    【转】【Android】对话框 AlertDialog -- 不错不错
    【转】 CATransform3D 矩阵变换之立方体旋转实现细节
    【转】如何在IOS中使用3D UI
  • 原文地址:https://www.cnblogs.com/lnlin/p/7798987.html
Copyright © 2011-2022 走看看