学习自唐佐林老师Qt
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:
QGroupBox m_radioGrpBx;//容器 用于放置两个单选按钮 QRadioButton
//网格布局管理器,水平布局管理器
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>
/*
QDialog(parent, Qt::WindowCloseButtonHint | Qt::Drawer)
窗口选项1:Qt::WindowCloseButtonHin 只显示一个关闭按钮
窗口选项2:Qt::Drawe 当前对话框 不显示左上角图标
*/
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_radioGrpBx容器 放置两个单选按钮 QRadioButton,设置标题
//添加到水平布局管理器
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(&m_radioGrpBx, 1, 1);
m_layout.addWidget(&m_closeBtn, 1, 2);
//将布局设置到查找对话框中
setLayout(&m_layout);
setWindowTitle("Find");//设置窗口标题
}
//重写事件处理
bool FindDialog::event(QEvent* evt)
{
//判断有没有收到 关闭 事件
if( evt->type() == QEvent::Close )
{
hide();//隐藏当前对话框
return true; //返回true 代表当前事件已经被处理了
}
return QDialog::event(evt);//其他事件 直接交给父类事件处理函数
}
//创建智能指针 Qt中的智能指针,指向查找对话框
QSharedPointer m_pFindDlg;
//初始化智能指针
m_pFindDlg(new FindDialog(this))
//打开查找对话框
m_pFindDlg->show();