`
izuoyan
  • 浏览: 8934150 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多
版权声明: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://devbean.blog.51cto.com/448512/198971
首 先说明一点,在C++ GUI Programming with Qt4, 2nd中,这一章连同以后的若干章一起,完成了一个比较完整的程序——一个模仿Excel的电子表格。不过这个程序挺大的,而且书中也没有给出完整的源代 码,只是分段分段的——我不喜欢这个样子,我想要看到我写出来的是什么东西,这是最主要的,而不是慢慢的过上几章的内容才能看到自己的作品。所以,我打算 换一种方式,每章只给出简单的知识,但是每章都能够运行出东西来。好了,扯完了,下面开始!
以前说的主要是一些基础知识,现在我们来真正做一个东西——一个查找对话框。什么?什么叫查找对话框?唉唉,先看看我们的最终作品吧!
好了,首先新建一个工程,就叫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

分享到:
评论

相关推荐

    Qt4-学习之路1

    (1):前言 4 (4):初探信号槽 12 (5):组件布局 13 (6): API 文档的使用 16 (7): 创建一个对话框(上) 17 (8): 创建一个

    QT学习之路2 (1~82篇)

    详细目录 1. 序 2. Qt 简介 3. Hello, world! 4. 信号槽 5. 自定义信号槽 6. Qt 模块简介 7. MainWindow 简介 8. 添加动作 9. 资源文件 ...13. 对话框简介 14. 对话框数据传递 ...C++:在堆上创建对象,还是在栈上?

    qt必备学习手册初级

    2.4 一个最简单的Qt应用程序 12 3 信号和槽机制 13 3.1 信号和槽 13 3.2 自定义信号槽 15 自定义信号槽需要注意的事项 18 信号槽的更多用法 18 3.3 Lambda表达式 19 4 Qt窗口系统 21 4.1 Qt窗口坐标体系 21 坐标体系...

    Qt4编程.pdf

    5.3使用QtDemo学习Qt应用程序开发 5.4问题与解答 5.5总结与提高 第6章Qt4程序开发方法和流程 6.1开发方法 6.2HelloQt 6.2.1基本流程 6.2.2源码分析 6.2.3.编译运行 6.2.4第2种方法 6.2.5第3种方法 6.3几个重要的...

    C++_GUI_Programming_with_Qt_4_CH

    创建对话框 第三章.创建主窗体 第四章.实现程序功能 第五章.创建自定义空间 第二部分:中级QT 第六章.布局管理器 第七章.事件处理 第八章.2D和3D绘图 第九章.拖拽和扔放操作 第十章. “项浏览”类 第十一章.容器类 第...

    24小时学通qt编程(PDF)

    重要的Qt部件,介绍常用Qt部件使用方法,以及怎样绘制图形和创建对话框等。第三部分&mdash;&mdash;深入学习Qt,介绍布局管理器、文件和目录、文本和常规表达式、容器类、图形、程序间通信等内容。第四部分&mdash;&...

    24小时学通qt编程

    第二部分——重要的Qt部件,介绍常用Qt部件使用方法,以及怎样绘制图形和创建对话框等。第三部分——深入学习Qt,介绍布局管理器、文件和目录、文本和常规表达式、容器类、图形、程序间通信等内容。第四部分——Qt...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    下面我们在主窗口上加一个按钮,按下该按钮,弹出一个对话框, 但这个对话框关闭,不会使主窗口关闭。 8.如下图,在主窗口加入按钮,显示文本为“弹出一个对话框”,在其上点击鼠 标右键,在弹出的菜单中选择go to ...

    精通qt4编程(源代码)

    \——QDialog 卢传富介绍了Qt的对话框类QDialog,实现了一个自定义的登录对话框,举例说明了Qt提供的内建对话框类的应用。 14 \ 第3章 基础窗口部件——QWidget 卢传富 \蔡志明首次引入Qt设计器的使用,绘制并实现了...

    精通Qt4编程(第二版)源代码

    \——QDialog 卢传富介绍了Qt的对话框类QDialog,实现了一个自定义的登录对话框,举例说明了Qt提供的内建对话框类的应用。 14 \ 第3章 基础窗口部件——QWidget 卢传富 \蔡志明首次引入Qt设计器的使用,绘制并实现...

    QT+Visual Studio 2019 的节目登记(含报告)

    1 创建基于对话框的应用程序,添加按钮、编辑框等控件; 2 设计报名表的数据结构(如:以数组或者动态链表)和相应的类; 3 完成对报名节目中记录的增加、修改、删除和显示。 4 将报名数据存入文件。能够打开并...

    MTDialog.zip

    Qt中模态对话框与非模态对话框的创建,可以供初学者学习

    基于QT和C++实现的火车票管理系统源码+项目说明.zip

    * **退票界面** 首先会弹出一个对话框进行引导操作。在输入框内输入购票记录的序号,再点击退票。这时会弹出一个对话框确认删除,注意退票不可恢复。 * **改签界面** 首先会弹出一个对话框进行引导操作。先在右侧...

    Linux程序设计 第4版.haozip01

    14.1.2 一个理论性的例子 489 14.1.3 linux的信号量机制 490 14.1.4 使用信号量 492 14.2 共享内存 496 14.2.1 shmget函数 497 14.2.2 shmat函数 497 14.2.3 shmdt 498 14.2.4 shmctl 498 14.3 消息队列 502...

    Linux程序设计 第4版.haozip02

    14.1.2 一个理论性的例子 489 14.1.3 linux的信号量机制 490 14.1.4 使用信号量 492 14.2 共享内存 496 14.2.1 shmget函数 497 14.2.2 shmat函数 497 14.2.3 shmdt 498 14.2.4 shmctl 498 14.3 消息队列 502...

    PyQt4 精彩实例分析26个例子

    pyqt4精彩实例讲解,适合pyqt4初级学习者,经供参考第6行创建了一个 QPush Button对象,并设置它的显示文木为“ Hello Kitty!&quot;,由于此处并 没有指定按钮的父窗体,因此以自己作为主窗凵 第7行调用show()方法,显示...

    嵌入式Linux应用程序开发标准教程(第2版全)

    《嵌入式Linux应用程序开发标准教程(第2版)》主要分为3个部分,包括Linux基础、搭建嵌入式Linux环境和嵌入式Linux的应用开发。Linux基础部分从Linux基础、基本操作命令讲起,为Linux初学者能快速入门提供了保证。...

    嵌入式Linux应用程序开发详解

    目录 第1章 Linux快速入门 1 1.1 嵌入式Linux基础 1 1.1.1 Linux发展概述 1 ...12.2.6 Qt/Embedded对话框设计 416 12.3 实验内容——使用Qt编写“Hello,World”程序 420 本章小结 428

Global site tag (gtag.js) - Google Analytics