示例代码:

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. Project Euler 90:Cube digit pairs 立方体数字对

    Cube digit pairs Each of the six faces on a cube has a different digit (0 to 9) written on it; the s ...

  2. Libsvm学习

        本篇博客转自 http://www.cppblog.com/guijie/archive/2013/09/05/169034.html     在电脑文件夹E:\other\matlab 20 ...

  3. eclipse安装反编译插件

    1. 进入http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download          下载 net.sf.jadclipse ...

  4. 不重启使XP环境变量生效

    不重启使XP环境变量生效 http://www.pkghost.cn/wz/sort0185/8874.html 在“我的电脑”->“属性”->“高级”->“环境变量”中增加或修改环 ...

  5. 如何禁用 radio ,设置为只读,不能选定

    如何禁用 radio ,设置为只读,不能选定 禁用 radio ,设置为只读,不能选定: <input name="gender" type="radio" ...

  6. laravel Restful

    参考:http://www.cnblogs.com/youxin/p/3967274.html http://scotch.io/tutorials/simple-laravel-crud-with- ...

  7. bzoj3955

    首先,最短路不同的两辆车一定不会发生堵塞 对于最短路相同的点,我们把属于最短路径上的边拎出来建图跑最大流即可 然后我TLE了…… 因为很明显建出来图很大,而真正流的流量很小 普通的初始标号都是0的sa ...

  8. hdu 4607 Park Visit(树上最长链)

    求树上最长链:两遍搜索. 第一次从树上任意点开始,最远点必然是某一条最长链上的端点u. 第二次从u开始,最远点即该最长链的另一端点. 先在最长链上走,不足再去走支链. 把询问数m错打成n,狠狠wa了一 ...

  9. ios 编译openssl支持arm64(转)

    最近在编译支付宝 快捷支付(无线) ios 端的时候发现demo不支持arm64.在网上找了下,看到客服说是openssl的库文件不支持arm64,于是自己编译了支持arm64的库文件,发现还是不行, ...

  10. CURL使用2

    一:LibCurl 编程流程1.调用curl_global_init()初始化libcurl2.调用 curl_easy_init()函数得到 easy interface型指针3.调用curl_ea ...