使用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();
}

Qt实现一个简单的TextEditor的更多相关文章

  1. 使用QT实现一个简单的登陆对话框(纯代码实现C++)

    使用QT实现一个简单的登陆对话框(纯代码实现C++) 效果展示 使用的QT控件 控件 描述 QLable 标签 QLineEdit 行文本框 QPushButton 按扭 QHBoxLayout 水平 ...

  2. 使用qt制作一个简单的计算器

    前言:今天使用qt制作了一个很简单的计算器,觉得挺有意思的,所以在这里跟大家分享一下. 这里先跟大家说说使用到的函数: 一.槽连接函数 connect(信号发送者,发送的信号,信号接收者,信号接收者的 ...

  3. qt实现一个简单的计算器

    1.计算器的界面如下图所示 dalog.cpp #include "dialog.h" #include "ui_dialog.h" #include<Q ...

  4. C++-Qt【2】-实现一个简单的记事本

    用Qt实现一个简单的记事本: #include "helloqt.h" #include <qfiledialog.h> #include <qfile.h> ...

  5. 用Qt写软件系列三:一个简单的系统工具(上)

    导言 继上篇<用Qt写软件系列二:QIECookieViewer>之后,有一段时间没有更新博客了.这次要写的是一个简单的系统工具,需求来自一个内部项目.功能其实很简单,就是查看当前当前系统 ...

  6. Qt使用一个事件队列对所有发出的事件进行维护(QObject的event()函数相当于dispatch函数),用EventLabel 继承QLabel作为例子(简单明了) good

    事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等:另一些事 ...

  7. 第一讲 一个简单的Qt程序分析

    本文概要:通过一个简单的Qt程序来介绍Qt程序编写的基本框架与一些Qt程序中常见的概念 #include <QApplication> #include <QPushButton&g ...

  8. Tinyhttpd - 超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client(Qt也有很多第三方HTTP类)

    - 2. Tinyhttpd tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Htt ...

  9. Pyqt 一个简单的浏览器

    使用QtWebKit 做一个简单的浏览器. mybrowserUI.ui <?xml version="1.0" encoding="UTF-8"?> ...

随机推荐

  1. linux下vi修改文件用法

    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...

  2. [模板] Miller-Rabin 素数测试

    细节挺多的.. #include<iostream> #include<cstdlib> #include<cstdio> #include<ctime> ...

  3. 网络设置命令--ifconfig.setup

    ifconfig命令 作用:用于显示以及设置当前活动网卡信息 一.  显示当前活动网卡信息 ifconfig 从上面可以看到当前主要有2块活动网卡,eth0:代表当前本地真实网卡 lo:代表回访网卡, ...

  4. KVM中的网络简介(qemu-kvm)

    emu-kvm主要向客户机提供了如下4种不同模式的网络: 1)基于网桥(bridge)的虚拟网卡 2)基于NAT(Network Addresss Translation)的虚拟网络 3)QEMU内置 ...

  5. Shell流程语句

    1. shell流程控制 流程控制是改变程序运行顺序的指令.linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case). 2. if ...

  6. React深入 - 手写redux api

    简介: 手写实现redux基础api createStore( )和store相关方法 api回顾: createStore(reducer, [preloadedState], enhancer) ...

  7. Django 1.8.11 REST风格路由

    # -*- coding: utf-8 -*- """ Tencent is pleased to support the open source community b ...

  8. nginx.conf的完整配置说明

    #用户 用户组 user www www; #工作进程,根据硬件调整,有人说几核cpu,就配几个,我觉得可以多一点 worker_processes 5: #错误日志 error_log logs/e ...

  9. zoj 1295 Reverse Text

    Reverse Text Time Limit: 2 Seconds      Memory Limit: 65536 KB In most languages, text is written fr ...

  10. CodeForces 606C--Sorting Railway Cars,思路题~~~

    C - Sorting Railway Cars   Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d &am ...