博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第四十八课、替换对话框的设计与实现------------------狄泰软件学院
阅读量:6336 次
发布时间:2019-06-22

本文共 2697 字,大约阅读时间需要 8 分钟。

一、替换对话框

1、替换对话框的需求分析

(1)、可复用软件部件

(2)、查找文本框中指定的字符

(3)、替换单个指定的字符

(4)、替换所有指定的字符

附加需求:点击关闭按钮后隐藏

2、替换对话框的设计与实现(继承自FindDialog

3、替换对话框的界面布局

 4、替换单个目标算法流程

5、MainWindow和ReplaceDialog之间的关系图

#ifndef REPLACEDIALOG_H#define REPLACEDIALOG_H#include "FindDialog.h"class ReplaceDialog : public FindDialog{    Q_OBJECT    QPushButton m_replaceButton;    QPushButton m_replaceAllButton;    QLabel m_replaceAsLabel;    QLineEdit m_replaceEdit;    void initControl();protected slots:    void onReplaceButtonClicked();    void onReplaceAllButtonClicked();public:    explicit ReplaceDialog(QWidget *parent = 0, QPlainTextEdit* pText = NULL);        };#endif // REPLACEDIALOG_H
可复用替换对话框头文件
#include "ReplaceDialog.h"ReplaceDialog::ReplaceDialog(QWidget *parent, QPlainTextEdit* pText) :    FindDialog(parent, pText){    initControl();    connect(&m_replaceButton, SIGNAL(clicked()), this, SLOT(onReplaceButtonClicked()));    connect(&m_replaceAllButton, SIGNAL(clicked()), this, SLOT(onReplaceAllButtonClicked()));    setWindowTitle("替换");    setLayout(&m_gLayout);}void ReplaceDialog::initControl(){    m_replaceButton.setText("替换");    m_replaceAllButton.setText("全部替换");    m_replaceAsLabel.setText("替换为: ");    m_gLayout.removeWidget(&m_checkBox);    m_gLayout.removeWidget(&m_gBox);    m_gLayout.removeWidget(&m_cancleButton);    m_gLayout.addWidget(&m_replaceAsLabel, 1, 0);    m_gLayout.addWidget(&m_replaceEdit, 1, 1);    m_gLayout.addWidget(&m_replaceButton, 1, 2);    m_gLayout.addWidget(&m_replaceAllButton, 2, 2);    m_gLayout.addWidget(&m_checkBox, 3, 0);    m_gLayout.addWidget(&m_gBox, 3, 1);    m_gLayout.addWidget(&m_cancleButton, 3, 2);}void ReplaceDialog::onReplaceButtonClicked(){    QString target = m_findLineEdit.text();    QString to = m_replaceEdit.text();    if(m_plainTextEdit != NULL && target !="" && to != "")    {        QString text = m_plainTextEdit->toPlainText();        QString selText = m_plainTextEdit->textCursor().selectedText();        if(selText == target)        {            m_plainTextEdit->insertPlainText(to);        }        onFindButtonClicked();    }}void ReplaceDialog::onReplaceAllButtonClicked(){    QString target = m_findLineEdit.text();    QString to = m_replaceEdit.text();    if(m_plainTextEdit != NULL && target !="" && to != "")    {        QString text = m_plainTextEdit->toPlainText();        text.replace(target, to, m_checkBox.isChecked()? Qt::CaseSensitive : Qt::CaseInsensitive);        m_plainTextEdit->clear();        m_plainTextEdit->setPlainText(text);    }}
可复用替换对话框实现文件

文本编辑器其它修改的地方:

头文件:

UI文件:

Slots.cpp:

二、小结

(1)、替换对话框的功能涵盖了查找对话框的功能

(2)、替换对话框可以继承自查找对话框

(3)、替换功能的实现是基于查找算法完成的

(4)、替换对话框是一个可复用的软件部件

转载于:https://www.cnblogs.com/gui-lin/p/6422530.html

你可能感兴趣的文章
基于Bootstrap的DropDownList的JQuery组件的完善版
查看>>
Hadoop MapReduce编程 API入门系列之分区和合并(十四)
查看>>
并查集的应用之求解无向图中的连接分量个数
查看>>
7个神奇的jQuery 3D插件
查看>>
在线浏览PDF之PDF.JS (附demo)
查看>>
波形捕捉:(3)"捕捉设备"性能
查看>>
AliOS Things lorawanapp应用介绍
查看>>
美国人的网站推广方式千奇百怪
查看>>
java web学习-1
查看>>
用maven+springMVC创建一个项目
查看>>
linux设备驱动第四篇:以oops信息定位代码行为例谈驱动调试方法
查看>>
redis知识点整理
查看>>
Hello World
查看>>
Spring3全注解配置
查看>>
ThreadLocal真会内存泄露?
查看>>
IntelliJ IDEA
查看>>
低版本mybatis不能用PageHeper插件的时候用这个分页
查看>>
javaweb使用自定义id,快速编码与生成ID
查看>>
[leetcode] Add Two Numbers
查看>>
elasticsearch suggest 的几种使用-completion 的基本 使用
查看>>