文本编辑器中替换对话框的设计与实现
文章目录
- 1 文本编辑器中替换对话框的设计与实现
1 文本编辑器中替换对话框的设计与实现
替换对话框需求分析:
- 可复用软件部分。
- 查找文本框中的指定字符串。
- 替换单个指定字符串。
- 替换所有指定字符串。
附加需求:
- 点击关闭按钮后隐藏。
替换对话框的设计与实现:
替换对话框的界面布局:
替换算法流程图:
Main Window与ReplaceDialog之间的关系图:
ReplaceDialog.h:
#ifndef _REPLACEDIALOG_H_
#define _REPLACEDIALOG_H_#include "FindDialog.h"class ReplaceDialog : public FindDialog
{Q_OBJECTprotected:QLabel m_replaceLbl;QLineEdit m_replaceEdit;QPushButton m_replaceBtn;QPushButton m_replaceAllBtn;void initControl();void connectSlot();
protected slots:void onReplaceClicked();void onReplaceAllClicked();
public:explicit ReplaceDialog(QWidget *parent = 0, QPlainTextEdit* pText = 0);
};#endif // _REPLACEDIALOG_H_
ReplaceDialog.cpp:
#include "ReplaceDialog.h"ReplaceDialog::ReplaceDialog(QWidget *parent, QPlainTextEdit* pText) :FindDialog(parent, pText)
{initControl();connectSlot();setWindowTitle("Replace");
}void ReplaceDialog::initControl()
{m_replaceLbl.setText("Replace To:");m_replaceBtn.setText("Replace");m_replaceAllBtn.setText("Replace All");m_layout.removeWidget(&m_matchChkBx);m_layout.removeWidget(&m_radioGrpBx);m_layout.removeWidget(&m_closeBtn);m_layout.addWidget(&m_replaceLbl, 1, 0);m_layout.addWidget(&m_replaceEdit, 1, 1);m_layout.addWidget(&m_replaceBtn, 1, 2);m_layout.addWidget(&m_matchChkBx, 2, 0);m_layout.addWidget(&m_radioGrpBx, 2, 1);m_layout.addWidget(&m_replaceAllBtn, 2, 2);m_layout.addWidget(&m_closeBtn, 3, 2);
}void ReplaceDialog::connectSlot()
{connect(&m_replaceBtn, SIGNAL(clicked()), this, SLOT(onReplaceClicked()));connect(&m_replaceAllBtn, SIGNAL(clicked()), this, SLOT(onReplaceAllClicked()));
}void ReplaceDialog::onReplaceClicked()
{QString target = m_findEdit.text();QString to = m_replaceEdit.text();if( (m_pText != NULL) && (target != "") && (to != "") ){QString selText = m_pText->textCursor().selectedText();if( selText == target ){m_pText->insertPlainText(to);}onFindClicked();}
}void ReplaceDialog::onReplaceAllClicked()
{QString target = m_findEdit.text();QString to = m_replaceEdit.text();if( (m_pText != NULL) && (target != "") && (to != "") ){QString text = m_pText->toPlainText();text.replace(target, to, m_matchChkBx.isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive);m_pText->clear();m_pText->insertPlainText(text);}
}
参考资料:
- QT实验分析教程
文本编辑器中替换对话框的设计与实现相关推荐
- 文本编辑器中查找对话框及功能实现
文章目录 1 查找对话框界面实现 2 查找对话框的功能实现 1 查找对话框界面实现 查找对话框需求分析: 可复用软件部分. 查找文本框中的指定字符串. 能够指定查找方向. 支持大小写敏感查找. 附加需 ...
- 数据结构与算法之美 32 字符串匹配基础(中):如何实现文本编辑器中的查找功能
如何实现文本编辑器中的查找功能 背景 BM 算法的核心思想 BM 算法原理分析 1. 坏字符规则 2. 好后缀规则 BM 算法代码实现 背景 文本编辑器中的查找替换功能,我想你应该不陌生吧?比如,我们 ...
- JavaScript Iframe富文本编辑器中的光标定位
最近在项目中碰到一个比较棘手的问题: 在iframe富文本编辑器中,有个工具栏,这个工具栏在iframe标签之外,工具栏上有一个按钮,点击该按钮向iframe正在编辑中的光标处插入一个图片,图片会插入 ...
- 在HTML中标记tel是什么意思,'tel'属性在AEM 6.1的经典UI中富文本编辑器中的锚标记的href中不起作用...
我正在使用AEM 6.1 SP2,我试图在定位标记的href中启用'tel'属性以使点击调用功能性工作.我已经添加了'htmlRules'节点 ,并将htmlRules节点下的节点与'protocol ...
- 享元模式在文本编辑器中的应用
如何利用享元模式来优化文本编辑器的内存占用? 你可以把这里提到的文本编辑器想象成 Office 的 Word.不过,为了简化需求背景,我们假设这个文本编辑器只实现了文字编辑功能,不包含图片.表格等复杂 ...
- 10-1Python学习笔记 10-2C语言学习笔记 : 在文本编辑器中新建一个文件, 写几句话来总结一下你至此学到的Python知识
10-1 Python学习笔记 : 在文本编辑器中新建一个文件, 写几句话来总结一下你至此学到的Python知识, 其中每一行都以"In Python you can"打头. 将这 ...
- 文本编辑器中命令行参数的应用
文章目录 1 文本编辑器中命令行参数的应用 1 文本编辑器中命令行参数的应用 我们要知道对于每一个应用程序我们都能够接收命令行参数,那么对于GUI系统中命令行参数如何传递到应用程序呢? 主要有如下两种 ...
- 文本编辑器中实现自动换行的功能
文章目录 1 文本编辑器中实现自动换行的功能 1 文本编辑器中实现自动换行的功能 实现思路: 获取当前文本编辑框的换行模式. 将模式进行反转后并进行设置. 更新对应QAction对象的状态. 槽函数的 ...
- 文本编辑器中实现自定义编辑框中字体和大小的功能
文章目录 1 文本编辑器中实现自定义编辑框中字体和大小的功能 1 文本编辑器中实现自定义编辑框中字体和大小的功能 实现思路: 通过QFontDialog选择字体及大小. 将QFont对象设置到文本编辑 ...
最新文章
- Web项目MySQL配置文件运维
- 织梦栏目mysql调用_织梦dedecms栏目调用标签,包括SQL语句调用方法
- 基于阿里云 DNS API 实现的 DDNS 工具
- python 通过ip获取城市_python shell根据ip获取主机名代码示例
- 实测6大App「青少年模式」:有徒具形式,也有虚情假意!
- linux命令存放 bash: xxx command not found
- 一个队列类的实现(比delphi自带的速度快70倍)
- Core data 框架
- 边工作边刷题:70天一遍leetcode: day 2
- 企业网站应用模式之—LAMP架构的源码编译超详细步骤,有手就行!
- 【NLP】之 结巴分词
- FFmpeg 视频旋转处理命令
- 建模方法(二)-组合优化问题的定义
- Vue入门项目:学生管理系统之班级管理 【含源码】
- 10---OpenCV:图像进阶操作之连通区域分析
- 网站开发之HTML基础知识及超链接(二)
- 阿里云上远程连接redis
- 【BLENDER】-渲染 背景设置
- Typora + PicGo + 七牛云图床
- 单链表的头插法与尾插法