文本编辑器中替换对话框的设计与实现
发布日期:2021-07-01 04:26:14
浏览次数:3
分类:技术文章
本文共 2463 字,大约阅读时间需要 8 分钟。
文章目录
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); }}
参考资料:
转载地址:https://muzimin.blog.csdn.net/article/details/105070654 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月16日 21时39分34秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
卖家网:跨境电商数据查询,淘宝大学免费课程,淘宝电商培训班,电商资讯干货
2019-05-04
2/short url/shorten - 微博API
2019-05-04
Chrome 59 支持 Headless 模式啦!
2019-05-04
关于架构 - pyspider中文文档 - pyspider中文网
2019-05-04
Token bucket - Wikipedia
2019-05-04
pyspider爬京东商品信息案例分享 - 案例分享 - pyspider中文网
2019-05-04
Binuxの杂货铺 Data Highlighter
2019-05-04
如何从 WEB 页面中提取信息 | Binuxの杂货铺
2019-05-04
Crawley Project · Crawley Project
2019-05-04
读《系统虚拟化-原理与实现》-第一章
2019-05-04
读《系统虚拟化-原理与实现》-第二章
2019-05-04
ssh 免密码登录
2019-05-04
读《系统虚拟化-原理与实现》-第三章
2019-05-04
龙芯派启用串口3-5
2019-05-04
龙芯3A4000 VNC配置
2019-05-04