代码来自http://www.informit.com/store/c-plus-plus-gui-programming-with-qt4-9780132354165

vs2008,Qt4.7.3

记录自己学习Qt4的过程,方便复习


//finddialog.h


#ifndef FINDDIALOG_H

#define FINDDIALOG_H


#include <QDialog>

//前置声明用于对话框实验的Qt类

class QCheckBox;

class QLabel;

class QLineEdit;

class QPushButton;


class FindDialog : public QDialog//声明FindDIalog 并且把他作为QDialog的子类

{

Q_OBJECT//对于定义了信号槽的类,类定义开始必须写宏Q_OBJECT


public:

FindDialog(QWidget *parent = 0);//parent 参数指定其父窗口组件,默认值为0,也就是空指针,没有父对象


signals://用户单击find时发出的两个信号signal关键字实际上是一个宏

void findNext(const QString &str, Qt::CaseSensitivity cs);//Qt::CaseSensitivity 是一个枚举类型,它有两个值,Qt::CaseSensitive 和 Qt::CaseInsensitive

void findPrevious(const QString &str, Qt::CaseSensitivity cs);


private slots://两个槽,

/*


???

实现他们需要访问整个对话框的所有子部件,所以保留指向他们的指针


*/

void findClicked();

void enableFindButton(const QString &text);

/*



对以下的变量,使用了前置声明,因为他们都是指针,而且没必要在头文件就访问他们,因而编译程序无需这些类的完整定义

我们没有包含与这几个类相关的头文件,<QLabel>等,利用前置声明可以使得编译更快一些


*/

private:

QLabel *label;

QLineEdit *lineEdit;

QCheckBox *caseCheckBox;

QCheckBox *backwardCheckBox;

QPushButton *findButton;

QPushButton *closeButton;

};


#endif


//finddialog.cpp


#ifndef FINDDIALOG_H

#define FINDDIALOG_H


#include <QDialog>

//前置声明用于对话框实验的Qt类

class QCheckBox;

class QLabel;

class QLineEdit;

class QPushButton;


class FindDialog : public QDialog//声明FindDIalog 并且把他作为QDialog的子类

{

Q_OBJECT//对于定义了信号槽的类,类定义开始必须写宏Q_OBJECT


public:

FindDialog(QWidget *parent = 0);//parent 参数指定其父窗口组件,默认值为0,也就是空指针,没有父对象


signals://用户单击find时发出的两个信号signal关键字实际上是一个宏

void findNext(const QString &str, Qt::CaseSensitivity cs);//Qt::CaseSensitivity 是一个枚举类型,它有两个值,Qt::CaseSensitive 和 Qt::CaseInsensitive

void findPrevious(const QString &str, Qt::CaseSensitivity cs);


private slots://两个槽,

/*


???

实现他们需要访问整个对话框的所有子部件,所以保留指向他们的指针


*/

void findClicked();

void enableFindButton(const QString &text);

/*



对以下的变量,使用了前置声明,因为他们都是指针,而且没必要在头文件就访问他们,因而编译程序无需这些类的完整定义

我们没有包含与这几个类相关的头文件,<QLabel>等,利用前置声明可以使得编译更快一些


*/

private:

QLabel *label;

QLineEdit *lineEdit;

QCheckBox *caseCheckBox;

QCheckBox *backwardCheckBox;

QPushButton *findButton;

QPushButton *closeButton;

};


#endif



//main.cpp

#include <QApplication>


#include "finddialog.h"


int main(int argc, char *argv[])

{

QApplication app(argc, argv);

FindDialog *dialog = new FindDialog;

dialog->show();

return app.exec();

}