Qt进修之路(7):建设一个对话框(上)
当前位置:以往代写 > C/C++ 教程 >Qt进修之路(7):建设一个对话框(上)
2019-06-13

Qt进修之路(7):建设一个对话框(上)

Qt进修之路(7):建设一个对话框(上)

首先说明一点,在C++ GUI Programming with Qt4, 2nd中,这一章连同今后的若干章一起,完成了一个较量完整的措施——一个仿照Excel的电子表格。不外这个措施挺大的,并且书中也没有给出完整的源代码,只是分段分段的——我不喜欢这个样子,我想要看到我写出来的是什么对象,这是最主要的,而不是逐步的过上几章的内容才气看到本身的作品。所以,我规划换一种方法,每章只给出简朴的常识,可是每章都可以或许运行出对象来。好了,扯完了,下面开始!

以前说的主要是一些基本常识,此刻我们来真正做一个对象——一个查找对话框。什么?什么叫查找对话框?唉唉,先看看我们的最终作品吧!

Qt学习之路(7):建树一个对话框(上)

好了,首先新建一个工程,就叫FindDialog吧!嗯,虽然照旧Qt Gui Application,然后最后一步留意,Base Dialog选择QDialog,而不是默认的QMainWindow,因为我们要进修成立对话框嘛!名字随便起,不外我就叫finddialog 啦!Ganarate form照旧不要的。然后Finish就好了。

打开finddialog.h,开始编写头文件。

#ifndef FINDDIALOG_H
#define FINDDIALOG_H

#include <QtGui/QDialog>

class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;

class FindDialog : public QDialog
{
Q_OBJECT

public:
FindDialog(QWidget *parent = 0);
~FindDialog();
signals:
void findNext(const QString &str, Qt::CaseSensitivity cs);
void findPrevious(const QString &str, Qt::CaseSensitivity cs);
private slots:
void findClicked();
void enableFindButton(const QString &text);
private:
QLabel *label;
QLineEdit *lineEdit;
QCheckBox *caseCheckBox;
QCheckBox *backwardCheckBox;
QPushButton *findButton;
QPushButton *closeButton;
};

#endif // FINDDIALOG_H

各人都是分明C++的啊,所以什么#ifndef,#define和#endif的寄义和用途就不再赘述了。

首先,声明四个用到的类。这里做的是前向声明,不然的话是编译不外的,因为编译器不知道这些类是否存在。简朴来说,所谓前向声明就是汇报编译器,我要用这几个类,并且这几个类存在,你就不要担忧它们存不存在的问题啦!

然后是我们的FindDialog,担任自QDialog。

下面是一个重要的对象:Q_OBJECT。这是一个宏。每每界说信号槽的类都必需声明这个宏。至于为什么,我们今后再说。

然后是public的结构函数和析构函数声明。

然后是一个signal:,这是Qt的要害字——还记得前面说过的嘛?Qt扩展了C++语言,因此它有本身的要害字——这是对信号的界说,也就是说,FindDialog有两个public的信号,它可以在特定的时刻发出这两个信号,就这里来说,假如用户点击了Find按钮,而且选中了Search backward,就会发出findPrevious(),不然发出findNext()。

紧接着是private slots:的界说,和前面的signal一样,这是私有的槽的界说。也就是说,FindDialog具有两个槽,可以吸收某些信号,不外这两个槽都是私有的。

为了slots的界说,我们需要会见FindDialog的组件,因此,我们把个中的组件界说为成员变量以便会见。正是因为需要界说这些组件,才需要对它们的范例举办前向声明。因为我们仅仅利用的是指针,并不涉及到这些类的函数,因此并不需要include它们的头文件——虽然,你想直接引入头文件也可以,不外那样的话编译速度就会慢一些。

好了,头文件先说这些,下一篇再说源代码啦!

出处: http://devbean.blog.51cto.com/448512/198971

    关键字:

在线提交作业