在本节课中,学习了如何子类化一个窗口,在下面就以经常用到的查找对话框为例:
具体的运行结果如下:
这个对话框就是一个基于QDialog的子类。
具体代码如下:
#ifndef CFILEDIALOG_H
#define CFILEDIALOG_H
#include<QDialog>
#include<QLabel>
#include<QCheckBox>
#include<QPushButton>
#include<QLineEdit>
class CFindDialog:public QDialog
{
Q_OBJECT
public:
//构造函数
CFindDialog(QWidget * parent = 0);
//当用户单击Find按钮对话框发出的两个信号
signals:
void findNext(const QString &str , Qt::CaseSensitivity cs);
void findPrev(const QString& str , Qt::CaseSensitivity cs);
//槽的声明
private slots:
void findClicked();//当按了查找按钮的时候响应的槽
void enableFindButton(const QString& text); //当编辑框中内容改变的时候响应的槽
//还应该为查找添加两个槽
// void findNexttext(const QString& text)...
// void findNexttext(const QString& text)...
//定义了各种控件的指针
private:
QLabel* label ;
QLineEdit* lineEdit;
QCheckBox* caseCheckBox;
QCheckBox* backwardCheckBox;
QPushButton* findButton;
QPushButton* closeButton;
};
#endif // CFILEDIALOG_H
在类的头文件中,完成了对各种控件的定义,以及信号和槽的定义等。
下面是在cpp文件中的实现代码如下:
#include "cfinddialog.h"
#include<QtGui>
#include<QHBoxLayout>
#include<QVBoxLayout>
#include<QGridLayout>
CFindDialog::CFindDialog(QWidget * parent):QDialog(parent)
{
//所有控件的初始化
label = new QLabel("Find &what:");