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(); }
  • 相关阅读:
    dp思维
    快速幂+地推
    背包问题找物品
    石子合并问题
    hihocoder 1580 Matrix(北京icpc2017网络赛)
    ACM对拍造数据
    主席树学习小结(POJ 2104)
    莫队算法入门 BZOJ 2038
    hdu 2586
    Kattis
  • 原文地址:https://www.cnblogs.com/lnlin/p/7798987.html
Copyright © 2011-2022 走看看