示例代码:

mainwindow.cpp

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include <QtGui>
  4. MainWindow::MainWindow(QWidget *parent) :
  5. QMainWindow(parent),
  6. ui(new Ui::MainWindow)
  7. {
  8. ui->setupUi(this);
  9. isSaved =false;
  10. curFile = tr("未命名.txt");
  11. setWindowTitle(curFile);
  12. init_statusBar();
  13. }
  14.  
  15. MainWindow::~MainWindow()
  16. {
  17. delete ui;
  18. }
  19.  
  20. void MainWindow::do_file_New()
  21. {
  22. do_file_SaveOrNot();
  23. isSaved = false;
  24. curFile = tr("未命名.txt");
  25. setWindowTitle(curFile);
  26. ui->textEdit->clear();//清空文本编辑器
  27. ui->textEdit->setVisible(true);//文本编辑器可见
  28. }
  29.  
  30. void MainWindow::do_file_SaveOrNot()
  31. {
  32. if(ui->textEdit->document()->isModified()) //如果文件被更改过,弹出保存对话框
  33. {
  34. QMessageBox box;
  35. box.setWindowTitle(tr("警告"));
  36. box.setIcon(QMessageBox::Warning);
  37. box.setText(curFile+tr("尚未保存,是否保存?"));
  38. box.setStandardButtons(QMessageBox::Yes|QMessageBox::No);
  39. if(box.exec() == QMessageBox::Yes)
  40. do_file_Save();
  41. }
  42. }
  43.  
  44. void MainWindow::do_file_Save()
  45. {
  46. if(isSaved)
  47. {
  48. saveFile(curFile);
  49. }
  50. else
  51. {
  52. do_file_SaveAs();
  53. }
  54. }
  55.  
  56. void MainWindow::do_file_SaveAs()
  57. {
  58. // QString fileName = QFileDialog::getSaveFileName(this,tr("另存为"),curFile);
  59. QString fileName = QFileDialog::getSaveFileName(this,tr("另存为"),curFile);
  60.  
  61. if(!fileName.isEmpty())
  62. {
  63. saveFile(fileName);
  64. }
  65.  
  66. }
  67.  
  68. bool MainWindow::saveFile(const QString &fileName)
  69. {
  70. QFile file(fileName);
  71. if(!file.open(QFile::WriteOnly|QFile::Text))
  72. {
  73. QMessageBox::warning(this,tr("保存文件"),
  74. tr("无法保存文件 %1:\n %2").arg(fileName)
  75. .arg(file.errorString()));
  76.  
  77. return false;
  78. }
  79.  
  80. QTextStream out(&file);
  81. out<<ui->textEdit->toPlainText();
  82. isSaved = true;
  83. curFile = QFileInfo(fileName).canonicalFilePath();
  84. setWindowTitle(curFile);
  85. return true;
  86. }
  87.  
  88. void MainWindow::do_file_Open()
  89. {
  90. do_file_SaveOrNot();
  91. QString fileName = QFileDialog::getOpenFileName(this);
  92. if(!fileName.isEmpty())
  93. {
  94. do_file_Load(fileName);
  95. }
  96.  
  97. ui->textEdit->setVisible(true);//文本编辑器可见
  98. }
  99.  
  100. bool MainWindow::do_file_Load(const QString &fileName)
  101. {
  102. QFile file(fileName);
  103. if(!file.open(QFile::ReadOnly|QFile::Text))
  104. {
  105. QMessageBox::warning(this,tr("读取文件"),tr("无法读取文件 %1:\n%2").arg(fileName).arg(file.errorString()));
  106. return false;
  107. }
  108.  
  109. QTextStream in(&file);
  110. ui->textEdit->setText(in.readAll());
  111. curFile = QFileInfo(fileName).canonicalFilePath();
  112. setWindowTitle(curFile);
  113. return true;
  114.  
  115. }
  116.  
  117. void MainWindow::on_action_N_triggered()
  118. {
  119. do_file_New();
  120. }
  121.  
  122. void MainWindow::on_action_S_triggered()
  123. {
  124. do_file_Save();
  125. }
  126.  
  127. void MainWindow::on_action_2_triggered()
  128. {
  129. do_file_SaveAs();
  130. }
  131.  
  132. void MainWindow::on_action_O_triggered()
  133. {
  134. do_file_Open();
  135. }
  136.  
  137. void MainWindow::on_action_C_triggered()
  138. {
  139. do_file_SaveOrNot();
  140. ui->textEdit->setVisible(false);
  141. }
  142.  
  143. void MainWindow::on_action_X_triggered()
  144. {
  145. on_action_C_triggered();
  146. qApp->quit();
  147. }
  148.  
  149. void MainWindow::on_action_Z_triggered()
  150. {
  151. ui->textEdit->undo();
  152. }
  153.  
  154. void MainWindow::on_action_X_2_triggered()
  155. {
  156. ui->textEdit->cut();
  157. }
  158.  
  159. void MainWindow::on_action_C_2_triggered()
  160. {
  161. ui->textEdit->copy();
  162. }
  163.  
  164. void MainWindow::on_action_V_triggered()
  165. {
  166. ui->textEdit->paste();
  167. }
  168.  
  169. void MainWindow::on_action_F_triggered()
  170. {
  171. QDialog *findDlg = new QDialog(this);
  172. findDlg ->setWindowTitle(tr("查找"));
  173. find_textLineEdit = new QLineEdit(findDlg);
  174. QPushButton *find_Btn = new QPushButton(tr("查找下一个"),findDlg);
  175. QVBoxLayout *layout = new QVBoxLayout(findDlg);
  176. layout ->addWidget(find_textLineEdit);
  177. layout->addWidget(find_Btn);
  178. findDlg ->show();
  179. //显示对话框
  180. connect(find_Btn,SIGNAL(clicked()),this,SLOT(show_findText()));
  181.  
  182. }
  183.  
  184. void MainWindow::show_findText()
  185. {
  186. QString findText = find_textLineEdit->text();
  187. ui->textEdit->find(findText,QTextDocument::FindBackward);
  188. if(!ui->textEdit->find(findText,QTextDocument::FindBackward))
  189. {
  190. QMessageBox::warning(this,tr("查找"),tr("找不到 %1").arg(findText));
  191. }
  192.  
  193. }
  194.  
  195. void MainWindow::init_statusBar()
  196. {
  197. QStatusBar*bar = ui->statusBar;
  198. first_statusLabel = new QLabel;
  199. first_statusLabel -> setMinimumSize(,);
  200. first_statusLabel -> setFrameShape(QFrame::WinPanel);
  201. first_statusLabel -> setFrameShadow(QFrame::Sunken);
  202. second_statusLabel = new QLabel;
  203. second_statusLabel->setMinimumSize(,);
  204. second_statusLabel ->setFrameShape(QFrame::WinPanel);
  205.  
  206. second_statusLabel->setFrameShadow(QFrame::Sunken);
  207. bar ->addWidget(first_statusLabel);
  208. bar->addWidget(second_statusLabel);
  209. first_statusLabel->setText(tr("欢迎使用文本编辑器"));
  210. second_statusLabel->setText("yafeilinux 制作!");
  211.  
  212. }

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. cojs 疯狂的求和问题 解题报告

    QAQ 好久不在cojs上出题了 最近学了点新科技,于是就做成题来分享了 这道题是要求simga(i^k) 那么就先说说部分分的算法吧: 10分: 直接暴力就可以了,时间复杂度O(nlogk) 30分 ...

  2. 李洪强漫谈iOS开发[C语言-010] - C语言简要复习

    // //  main.m //  05 - 简要复习 // //  Created by vic fan on 16/7/13. //  Copyright © 2016年 李洪强. All rig ...

  3. 李洪强iOS开之【零基础学习iOS开发】【02-C语言】04-常量、变量

    在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据.图片数据.视频数据,还有聊QQ时产生的文字数据.用迅雷下载的文件数据等.这讲我们就来介绍C语言中数据的处理. 一.数据的存储 1.数据类型 ...

  4. C内存分配函数

    C语言跟内存分配方式(1) 从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量.(2) 在栈上创建.在执行函数时,函数内局部变量的 ...

  5. Ios 弹框 MJPopup,KxMenu

    IOS 弹框 如果直接弹出一个自定义的视图 可以选用第三方: MJPopup 弹出: if(!bandview) { bandview=[[[NSBundle mainBundle]loadNibNa ...

  6. Tomcat原理 分类: 原理 2015-06-28 19:26 5人阅读 评论(0) 收藏

    Tomcat的模块结构设计的相当好,而且其Web 容器的性能相当出色.JBoss直接就使用了Tomcat的web容器,WebLogic的早期版本也是使用了Tomcat的代码. Web容器的工作过程在下 ...

  7. Java解压上传zip或rar文件,并解压遍历文件中的html的路径

    1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception { HttpSession session = request.getSe ...

  8. 【Todo】JS跨域访问问题的解决

    做双十一,需要在主会场页面,嵌入我们产品的JS豆腐块.而这个豆腐块需要调用我们后端的数据接口,涉及跨域访问. 参考 http://www.cnblogs.com/2050/p/3191744.html ...

  9. hdu 4920 Matrix multiplication (矩阵计算)

    题目链接 题意:给两个矩阵a, b, 计算矩阵a*b的结果对3取余. 分析:直接计算时间复杂度是O(n^3),会超时,但是下面第一个代码勉强可以水过,数据的原因. #include <iostr ...

  10. 关于post get ajax

    今天写程序时  出现了下面问题: 前台 $.post('ajax/GetDataAjax.ashx', { 'mode': 'DEL', 'BM_ID': bm_id }, function (res ...