qt文本编辑器
示例代码:
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文本编辑器的更多相关文章
- C++ GUI Qt4编写的文本编辑器
mainwindow.h: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMenu> #include <QAction& ...
- Qt富文本编辑器QTextDocument
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt富文本编辑器QTextDocument 本文地址:https://www.tech ...
- PyQt(Python+Qt)学习随笔:纯文本编辑器QPlainTextEdit功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QPlainTextEdit是用于纯文本的一个高级文档编辑器 ...
- PyQt(Python+Qt)学习随笔:富文本编辑器QTextEdit功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QTextEdit是一个高级的所见即所得的文档查看器和编辑器 ...
- C++ Qt 项目实战(一)之文本编辑器
文本编辑器例图 项目开发环境 系统版本:windows10 QT 版本: 5.9.9 开发语言:C++ 已实现功能 文件操作:新建,打开,保存,另存为,打印,退出 编辑操作:复制,粘贴,剪切,查找,替 ...
- 基于trie树的具有联想功能的文本编辑器
之前的软件设计与开发实践课程中,自己构思的大作业题目.做的具有核心功能,但是还欠缺边边角角的小功能和持久化数据结构,先放出来,有机会一点点改.github:https://github.com/chu ...
- qt_文本编辑器实现_附带详细注释和源码下载
源码下载: 链接: http://pan.baidu.com/s/1c21EVRy 密码: qub8 实现主要的功能有:新建,打开,保存,另存为,查找(查找的时候需要先将光标放到最下面位置才能查全,不 ...
- 在线富文本编辑器FckEditor配置(.Net Framework 3.5)
进入FCKeditor文件夹,编辑 fckconfig.js 文件.1.上传设置 . var _FileBrowserLanguage = 'php' ; // a ...
- python实现的文本编辑器 - Skycrab - 博客频道 - CSDN.NET
Download Qt, the cross-platform application framework | Qt Project Qt 5.2.1 for Windows 64-bit (VS 2 ...
随机推荐
- cojs 疯狂的求和问题 解题报告
QAQ 好久不在cojs上出题了 最近学了点新科技,于是就做成题来分享了 这道题是要求simga(i^k) 那么就先说说部分分的算法吧: 10分: 直接暴力就可以了,时间复杂度O(nlogk) 30分 ...
- 李洪强漫谈iOS开发[C语言-010] - C语言简要复习
// // main.m // 05 - 简要复习 // // Created by vic fan on 16/7/13. // Copyright © 2016年 李洪强. All rig ...
- 李洪强iOS开之【零基础学习iOS开发】【02-C语言】04-常量、变量
在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据.图片数据.视频数据,还有聊QQ时产生的文字数据.用迅雷下载的文件数据等.这讲我们就来介绍C语言中数据的处理. 一.数据的存储 1.数据类型 ...
- C内存分配函数
C语言跟内存分配方式(1) 从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量.(2) 在栈上创建.在执行函数时,函数内局部变量的 ...
- Ios 弹框 MJPopup,KxMenu
IOS 弹框 如果直接弹出一个自定义的视图 可以选用第三方: MJPopup 弹出: if(!bandview) { bandview=[[[NSBundle mainBundle]loadNibNa ...
- Tomcat原理 分类: 原理 2015-06-28 19:26 5人阅读 评论(0) 收藏
Tomcat的模块结构设计的相当好,而且其Web 容器的性能相当出色.JBoss直接就使用了Tomcat的web容器,WebLogic的早期版本也是使用了Tomcat的代码. Web容器的工作过程在下 ...
- Java解压上传zip或rar文件,并解压遍历文件中的html的路径
1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception { HttpSession session = request.getSe ...
- 【Todo】JS跨域访问问题的解决
做双十一,需要在主会场页面,嵌入我们产品的JS豆腐块.而这个豆腐块需要调用我们后端的数据接口,涉及跨域访问. 参考 http://www.cnblogs.com/2050/p/3191744.html ...
- hdu 4920 Matrix multiplication (矩阵计算)
题目链接 题意:给两个矩阵a, b, 计算矩阵a*b的结果对3取余. 分析:直接计算时间复杂度是O(n^3),会超时,但是下面第一个代码勉强可以水过,数据的原因. #include <iostr ...
- 关于post get ajax
今天写程序时 出现了下面问题: 前台 $.post('ajax/GetDataAjax.ashx', { 'mode': 'DEL', 'BM_ID': bm_id }, function (res ...