文章目录

  • 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);}
}

参考资料:

  1. QT实验分析教程

文本编辑器中替换对话框的设计与实现相关推荐

  1. 文本编辑器中查找对话框及功能实现

    文章目录 1 查找对话框界面实现 2 查找对话框的功能实现 1 查找对话框界面实现 查找对话框需求分析: 可复用软件部分. 查找文本框中的指定字符串. 能够指定查找方向. 支持大小写敏感查找. 附加需 ...

  2. 数据结构与算法之美 32 字符串匹配基础(中):如何实现文本编辑器中的查找功能

    如何实现文本编辑器中的查找功能 背景 BM 算法的核心思想 BM 算法原理分析 1. 坏字符规则 2. 好后缀规则 BM 算法代码实现 背景 文本编辑器中的查找替换功能,我想你应该不陌生吧?比如,我们 ...

  3. JavaScript Iframe富文本编辑器中的光标定位

    最近在项目中碰到一个比较棘手的问题: 在iframe富文本编辑器中,有个工具栏,这个工具栏在iframe标签之外,工具栏上有一个按钮,点击该按钮向iframe正在编辑中的光标处插入一个图片,图片会插入 ...

  4. 在HTML中标记tel是什么意思,'tel'属性在AEM 6.1的经典UI中富文本编辑器中的锚标记的href中不起作用...

    我正在使用AEM 6.1 SP2,我试图在定位标记的href中启用'tel'属性以使点击调用功能性工作.我已经添加了'htmlRules'节点 ,并将htmlRules节点下的节点与'protocol ...

  5. 享元模式在文本编辑器中的应用

    如何利用享元模式来优化文本编辑器的内存占用? 你可以把这里提到的文本编辑器想象成 Office 的 Word.不过,为了简化需求背景,我们假设这个文本编辑器只实现了文字编辑功能,不包含图片.表格等复杂 ...

  6. 10-1Python学习笔记 10-2C语言学习笔记 : 在文本编辑器中新建一个文件, 写几句话来总结一下你至此学到的Python知识

    10-1 Python学习笔记 : 在文本编辑器中新建一个文件, 写几句话来总结一下你至此学到的Python知识, 其中每一行都以"In Python you can"打头. 将这 ...

  7. 文本编辑器中命令行参数的应用

    文章目录 1 文本编辑器中命令行参数的应用 1 文本编辑器中命令行参数的应用 我们要知道对于每一个应用程序我们都能够接收命令行参数,那么对于GUI系统中命令行参数如何传递到应用程序呢? 主要有如下两种 ...

  8. 文本编辑器中实现自动换行的功能

    文章目录 1 文本编辑器中实现自动换行的功能 1 文本编辑器中实现自动换行的功能 实现思路: 获取当前文本编辑框的换行模式. 将模式进行反转后并进行设置. 更新对应QAction对象的状态. 槽函数的 ...

  9. 文本编辑器中实现自定义编辑框中字体和大小的功能

    文章目录 1 文本编辑器中实现自定义编辑框中字体和大小的功能 1 文本编辑器中实现自定义编辑框中字体和大小的功能 实现思路: 通过QFontDialog选择字体及大小. 将QFont对象设置到文本编辑 ...

最新文章

  1. Web项目MySQL配置文件运维
  2. 织梦栏目mysql调用_织梦dedecms栏目调用标签,包括SQL语句调用方法
  3. 基于阿里云 DNS API 实现的 DDNS 工具
  4. python 通过ip获取城市_python shell根据ip获取主机名代码示例
  5. 实测6大App「青少年模式」:有徒具形式,也有虚情假意!
  6. linux命令存放 bash: xxx command not found
  7. 一个队列类的实现(比delphi自带的速度快70倍)
  8. Core data 框架
  9. 边工作边刷题:70天一遍leetcode: day 2
  10. 企业网站应用模式之—LAMP架构的源码编译超详细步骤,有手就行!
  11. 【NLP】之 结巴分词
  12. FFmpeg 视频旋转处理命令
  13. 建模方法(二)-组合优化问题的定义
  14. Vue入门项目:学生管理系统之班级管理 【含源码】
  15. 10---OpenCV:图像进阶操作之连通区域分析
  16. 网站开发之HTML基础知识及超链接(二)
  17. 阿里云上远程连接redis
  18. 【BLENDER】-渲染 背景设置
  19. Typora + PicGo + 七牛云图床
  20. 单链表的头插法与尾插法

热门文章

  1. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第9章-结论与展望
  2. 图像配准代码(包含matlab/opencv C++)
  3. 2.4带通采样的实际问题
  4. 随机接入响应(RAR,即MSG2)发送过程
  5. 【DIY】嫌arduino太贵?太大?试试ATTINY85!DIY温湿度计入门级教程请收下
  6. 文化氛围对新人培养新人的影响
  7. Linux /etc/profile文件详解
  8. C++ 之常对象,常对象成员
  9. 深度解析HashMap
  10. 简单的基于hash和hashchange的前端路由