zoukankan      html  css  js  c++  java
  • 第四十八课、替换对话框的设计与实现------------------狄泰软件学院

    一、替换对话框

    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)、替换对话框是一个可复用的软件部件

  • 相关阅读:
    网页工具KOBAS进行KEGG富集分析
    Novel LncRNA的实时定量PCR引物设计教程
    Annotated LncRNA的实时定量PCR引物设计教程
    GO分析-GOseq的使用教程
    转录因子预测-oPOSSUM 3.0的使用教程
    miRNA结合位点预测软件RNAhybrid的使用教程
    关于win10用户名设置为中文导致Rstudio画图报错的解决方法
    edgeR之配对检验分析差异基因的使用教程
    51nod 1051最大子矩阵和
    51nod最大字段和(1049 1254)
  • 原文地址:https://www.cnblogs.com/gui-lin/p/6422530.html
Copyright © 2011-2022 走看看