示例代码:

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
isSaved =false;
curFile = tr("未命名.txt");
setWindowTitle(curFile);
init_statusBar();
} MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::do_file_New()
{
do_file_SaveOrNot();
isSaved = false;
curFile = tr("未命名.txt");
setWindowTitle(curFile);
ui->textEdit->clear();//清空文本编辑器
ui->textEdit->setVisible(true);//文本编辑器可见
} void MainWindow::do_file_SaveOrNot()
{
if(ui->textEdit->document()->isModified()) //如果文件被更改过,弹出保存对话框
{
QMessageBox box;
box.setWindowTitle(tr("警告"));
box.setIcon(QMessageBox::Warning);
box.setText(curFile+tr("尚未保存,是否保存?"));
box.setStandardButtons(QMessageBox::Yes|QMessageBox::No);
if(box.exec() == QMessageBox::Yes)
do_file_Save();
}
} void MainWindow::do_file_Save()
{
if(isSaved)
{
saveFile(curFile);
}
else
{
do_file_SaveAs();
}
} void MainWindow::do_file_SaveAs()
{
// QString fileName = QFileDialog::getSaveFileName(this,tr("另存为"),curFile);
QString fileName = QFileDialog::getSaveFileName(this,tr("另存为"),curFile); if(!fileName.isEmpty())
{
saveFile(fileName);
} } bool MainWindow::saveFile(const QString &fileName)
{
QFile file(fileName);
if(!file.open(QFile::WriteOnly|QFile::Text))
{
QMessageBox::warning(this,tr("保存文件"),
tr("无法保存文件 %1:\n %2").arg(fileName)
.arg(file.errorString())); return false;
} QTextStream out(&file);
out<<ui->textEdit->toPlainText();
isSaved = true;
curFile = QFileInfo(fileName).canonicalFilePath();
setWindowTitle(curFile);
return true;
} void MainWindow::do_file_Open()
{
do_file_SaveOrNot();
QString fileName = QFileDialog::getOpenFileName(this);
if(!fileName.isEmpty())
{
do_file_Load(fileName);
} ui->textEdit->setVisible(true);//文本编辑器可见
} bool MainWindow::do_file_Load(const QString &fileName)
{
QFile file(fileName);
if(!file.open(QFile::ReadOnly|QFile::Text))
{
QMessageBox::warning(this,tr("读取文件"),tr("无法读取文件 %1:\n%2").arg(fileName).arg(file.errorString()));
return false;
} QTextStream in(&file);
ui->textEdit->setText(in.readAll());
curFile = QFileInfo(fileName).canonicalFilePath();
setWindowTitle(curFile);
return true; } void MainWindow::on_action_N_triggered()
{
do_file_New();
} void MainWindow::on_action_S_triggered()
{
do_file_Save();
} void MainWindow::on_action_2_triggered()
{
do_file_SaveAs();
} void MainWindow::on_action_O_triggered()
{
do_file_Open();
} void MainWindow::on_action_C_triggered()
{
do_file_SaveOrNot();
ui->textEdit->setVisible(false);
} void MainWindow::on_action_X_triggered()
{
on_action_C_triggered();
qApp->quit();
} void MainWindow::on_action_Z_triggered()
{
ui->textEdit->undo();
} void MainWindow::on_action_X_2_triggered()
{
ui->textEdit->cut();
} void MainWindow::on_action_C_2_triggered()
{
ui->textEdit->copy();
} void MainWindow::on_action_V_triggered()
{
ui->textEdit->paste();
} void MainWindow::on_action_F_triggered()
{
QDialog *findDlg = new QDialog(this);
findDlg ->setWindowTitle(tr("查找"));
find_textLineEdit = new QLineEdit(findDlg);
QPushButton *find_Btn = new QPushButton(tr("查找下一个"),findDlg);
QVBoxLayout *layout = new QVBoxLayout(findDlg);
layout ->addWidget(find_textLineEdit);
layout->addWidget(find_Btn);
findDlg ->show();
//显示对话框
connect(find_Btn,SIGNAL(clicked()),this,SLOT(show_findText())); } void MainWindow::show_findText()
{
QString findText = find_textLineEdit->text();
ui->textEdit->find(findText,QTextDocument::FindBackward);
if(!ui->textEdit->find(findText,QTextDocument::FindBackward))
{
QMessageBox::warning(this,tr("查找"),tr("找不到 %1").arg(findText));
} } void MainWindow::init_statusBar()
{
QStatusBar*bar = ui->statusBar;
first_statusLabel = new QLabel;
first_statusLabel -> setMinimumSize(,);
first_statusLabel -> setFrameShape(QFrame::WinPanel);
first_statusLabel -> setFrameShadow(QFrame::Sunken);
second_statusLabel = new QLabel;
second_statusLabel->setMinimumSize(,);
second_statusLabel ->setFrameShape(QFrame::WinPanel); second_statusLabel->setFrameShadow(QFrame::Sunken);
bar ->addWidget(first_statusLabel);
bar->addWidget(second_statusLabel);
first_statusLabel->setText(tr("欢迎使用文本编辑器"));
second_statusLabel->setText("yafeilinux 制作!"); }

qt文本编辑器的更多相关文章

  1. C++ GUI Qt4编写的文本编辑器

    mainwindow.h: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMenu> #include <QAction& ...

  2. Qt富文本编辑器QTextDocument

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt富文本编辑器QTextDocument     本文地址:https://www.tech ...

  3. PyQt(Python+Qt)学习随笔:纯文本编辑器QPlainTextEdit功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QPlainTextEdit是用于纯文本的一个高级文档编辑器 ...

  4. PyQt(Python+Qt)学习随笔:富文本编辑器QTextEdit功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QTextEdit是一个高级的所见即所得的文档查看器和编辑器 ...

  5. C++ Qt 项目实战(一)之文本编辑器

    文本编辑器例图 项目开发环境 系统版本:windows10 QT 版本: 5.9.9 开发语言:C++ 已实现功能 文件操作:新建,打开,保存,另存为,打印,退出 编辑操作:复制,粘贴,剪切,查找,替 ...

  6. 基于trie树的具有联想功能的文本编辑器

    之前的软件设计与开发实践课程中,自己构思的大作业题目.做的具有核心功能,但是还欠缺边边角角的小功能和持久化数据结构,先放出来,有机会一点点改.github:https://github.com/chu ...

  7. qt_文本编辑器实现_附带详细注释和源码下载

    源码下载: 链接: http://pan.baidu.com/s/1c21EVRy 密码: qub8 实现主要的功能有:新建,打开,保存,另存为,查找(查找的时候需要先将光标放到最下面位置才能查全,不 ...

  8. 在线富文本编辑器FckEditor配置(.Net Framework 3.5)

    进入FCKeditor文件夹,编辑 fckconfig.js 文件.1.上传设置  .  var _FileBrowserLanguage         = 'php' ;         // a ...

  9. python实现的文本编辑器 - Skycrab - 博客频道 - CSDN.NET

    Download Qt, the cross-platform application framework | Qt Project Qt 5.2.1 for Windows 64-bit (VS 2 ...

随机推荐

  1. 将集成spring的项目从tomcat上移植到weblogic下存在的问题

    当在weblogic下部署时, 1.需要jersey-servlet-xx.jar,jersey-core-xx.jar,jersey-server-xx.jar: 2.在web.xml中全局参数co ...

  2. 【nginx运维基础(3)】Nginx的编译PHP

    Apache默认是把PHP作为本身的一个模块(mod_php)来运行的,而Nginx是以FastCGI方式运行的.所以使用Nginx+PHP就是直接配置为FastCGI模式. 安装PHP 下载地址: ...

  3. 500G JAVA视频网盘分享 (Jeecg社区)

    http://blog.csdn.net/zhangdaiscott/article/details/18220411    csdn 排名400多名 500 G JAVA视频网盘分享(Jeecg社区 ...

  4. Linux中断(interrupt)子系统

    Linux中断(interrupt)子系统之一:中断系统基本原理 Linux中断(interrupt)子系统之二:arch相关的硬件封装层 Linux中断(interrupt)子系统之三:中断流控处理 ...

  5. 几种USB控制器类型:OHCI,UHCI,EHCI,xHCI

    http://smilejay.com/2012/10/usb_controller_xhci/ 遇到过一些关于USB的东西(如下),一直没搞明白什么USB1.0/1.1/2.0/3.0之类的,当然我 ...

  6. 阿里巴巴fastJson

    FastJson解析 一.阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java ...

  7. s3cmd的安装与配置

    安装包链接:http://files.cnblogs.com/files/litao0505/s3.rar 安装S3cmd1. tar -zxf s3cmd-1.0.0.tar.gz2. mv s3c ...

  8. [翻译] - <Entity Framework> - 直接执行数据库命令

    原文:[翻译] - <Entity Framework> - 直接执行数据库命令 纯属学习上的记录, 非专业翻译, 如有错误欢迎指正! 原文地址: http://msdn.microsof ...

  9. linux系统启动级别

    linux运行级别 以管理员身份进入Linux,修改文件:/etc/inittab 找到"id:5:initdefault:"其中的5就是X-window,为默认的运行级别 lin ...

  10. C# 使用AutoResetEvent进行线程同步

    AutoResetEvent 允许线程通过发信号互相通信. 通常,当线程需要独占访问资源时使用该类. 线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号. 如果 AutoRe ...