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 ...
随机推荐
- lintcode:First Missing Positive 丢失的第一个正整数
题目 丢失的第一个正整数 给出一个无序的整数数组,找出其中没有出现的最小正整数. 样例 如果给出 [1,2,0], return 3 如果给出 [3,4,-1,1], return 2 挑战 只允许时 ...
- lintcode: 爬楼梯
题目: 爬楼梯 假设你正在爬楼梯,需要n步你才能到达顶部.但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部? 样例 比如n=3,中不同的方法 返回 3 解题: 动态规划题目,同时还是有顺序 ...
- 【nginx运维基础(3)】Nginx的编译PHP
Apache默认是把PHP作为本身的一个模块(mod_php)来运行的,而Nginx是以FastCGI方式运行的.所以使用Nginx+PHP就是直接配置为FastCGI模式. 安装PHP 下载地址: ...
- 【Linux高频命令专题(10)】mv
概述 mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 命令格式 mv [选项] 源文件或目 ...
- Android:界面设计工具DroidDraw
DroidDraw是款强大的安卓界面设计软件,基于Java Swing开发,可以通过它拖动控件.设置层属性.设置颜色等步骤轻松地生成复杂的安卓XML布局文件. >>>>> ...
- HDU5090——Game with Pearls(匈牙利算法|贪心)(2014上海邀请赛重现)
Game with Pearls Problem DescriptionTom and Jerry are playing a game with tubes and pearls. The rule ...
- Java String.compareTo()方法
描述:java.lang.String.compareTo() 方法比较两个字符串的字典. 比较是基于字符串中的每个字符的Unicode值.此String对象表示的字符序列的 参数字符串表示的字符序列 ...
- Map集合案例
1.获取字符串中每一个字母出现的次数. 比如"aababcabcdabcde",结果为:a(5)b(4)c(3)d(2)e(1) 分析如下: package mapexercise ...
- 剖析MapReduce 作业运行机制
包含四个独立的实体: · Client Node 客户端:编写 MapReduce代码,配置作业,提交MapReduce作业. · JobTracker :初始化作业,分配作业,与 TaskTra ...
- SQL语句练习
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...