文章目录
1 查找对话框界面实现
查找对话框需求分析:
- 可复用软件部分。
- 查找文本框中的指定字符串。
- 能够指定查找方向。
- 支持大小写敏感查找。
附加需求:
- 点击关闭按钮后隐藏。
查找对话框的架构与设计:
查找对话框的界面与布局:
FindDialog.h:
#ifndef _FINDDIALOG_H_
#define _FINDDIALOG_H_
#include <QDialog>
#include <QGridLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QRadioButton>
#include <QCheckBox>
#include <QGroupBox>
class FindDialog : public QDialog
{
Q_OBJECT
protected:
/*
* 必须注意,这里的初始化顺序很重要,m_radioGrpBx必须在m_hbLayout之前声明,如果在其后m_radioGrpBx析构时会将m_hbLayout进行析构,但是m_hbLayout是栈对象,被delete就会出问题,一定要注意!!!
*/
QGroupBox m_radioGrpBx;
QGridLayout m_layout;
QHBoxLayout m_hbLayout;
QLabel m_findLbl;
QLineEdit m_findEdit;
QPushButton m_findBtn;
QPushButton m_closeBtn;
QCheckBox m_matchChkBx;
QRadioButton m_forwardBtn;
QRadioButton m_backwardBtn;
public:
explicit FindDialog(QWidget* parent = 0);
bool event(QEvent* evt);
signals:
public slots:
};
#endif // _FINDDIALOG_H_
FindDialog.cpp:
#include "FindDialog.h"
#include <QEvent>
FindDialog::FindDialog(QWidget *parent) : QDialog(parent, Qt::WindowCloseButtonHint | Qt::Drawer)
{
m_findLbl.setText("Find What:");
m_findBtn.setText("Find Next");
m_closeBtn.setText("Close");
m_matchChkBx.setText("Match Case");
m_backwardBtn.setText("Backward");
m_forwardBtn.setText("Forward");
m_forwardBtn.setChecked(true);
m_radioGrpBx.setTitle("Direction");
m_hbLayout.addWidget(&m_forwardBtn);
m_hbLayout.addWidget(&m_backwardBtn);
m_radioGrpBx.setLayout(&m_hbLayout);
m_layout.setSpacing(10);
m_layout.addWidget(&m_findLbl, 0, 0);
m_layout.addWidget(&m_findEdit, 0, 1);
m_layout.addWidget(&m_findBtn, 0, 2);
m_layout.addWidget(&m_matchChkBx, 1, 0);
m_layout.addWidget(