注:
只有继承了QObject类的类,才具有信号槽的能力。
凡是QObject类,都应该在第一行代码上写Q_OBJECT,需要指出的是,不管是不是使用信号槽,都应该添加这个宏,这个宏的展开将为我们的类提供信号槽机制、国际化机制
以及Qt提供的不基于c++RTT1的反射能力。
//newspaper.h #include <QObject> class Newspaer : public QObject { Q_OBJECT public: Newspaer(const QString & name) : m_name(name) { } void send() { emit newPaper(m_name); } signals: void newPaper(const QString & name); private: QString m_name; };
//reader.h #include <QObject> #include <QDebug> class Reader : public QObject { Q_OBJECT public: Reader() { } void receiveNewspaper(const QString & name) { qDebug()<<"Recvives Nespaper: "<< name; } }; //mian.cpp #include <QtCore/QCoreApplication> #include "newspaper.h" #include "reader.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Newspaer newspaper("Newspaper A"); Reader reader; QObject::connect(&newspaper,&Newspaer::newPaper,&reader, &Reader::receiveNewspaper); /*void (Newspaper:: *newPaperNameDate)(const QString &,const QDate &)=&Newspaper::newPaper; QObject::connect(&newspaper,newPaperNameDate,&reader,&Reader::receiveNewspaper);*/ //QObject::connect(&newspaper,static_cast<void (Newspaper:: *)(const QString &,const QDate &)>(&Newspaper::newPaper),&reader,&Reader::receiveNewspaper); newspaper.send(); return a.exec(); }
Qt Core ,提供核心的非 GUI 功能,所有模块都需要这个模块。这个模块的类包括了动画框架、定时器、各个容器类、时间日期类、事件、IO、JSON、插件机制、智能指针、图形(矩形、路径等)、线程、XML 等。所有这些类都可以通过 <QtCore>头文件引入。
Qt Gui,提供 GUI 程序的基本功能,包括与窗口系统的集成、事件处理、OpenGL和 OpenGL ES 集成、2D 图像、字体、拖放等。这些类一般由 Qt 用户界面类内部使用,当然也可以用于访问底层的 OpenGL ES 图像 API。Qt Gui 模块提供的是所有图形用户界面程序都需要的通用功能。
Qt Multimedia,提供视频、音频、收音机以及摄像头等功能。这些类可以通过<QtMultimedia> 引入,而且需要在 pro 文件中添加 QT += multimedia。
Qt Network,提供跨平台的网络功能。这些类可以通过 <QtNetwork> 引入,而且需要在 pro 文件中添加 QT += network。
Qt Qml,提供供 QML(一种脚本语言,也提供 JavaScript 的交互机制) 使用的C++ API。这些类可以通过 <QtQml> 引入,而且需要在 pro 文件中添加 QT +=qml。
Qt Quick,允许在 Qt/C++ 程序中嵌入 Qt Quick(一种基于 Qt 的高度动画的用户界面,适合于移动平台开发)。这些类可以通<QtQuick> 引入,而且需要在 pro文件中添加 QT += quick。
Qt SQL,允许使用 SQL 访问数据库。这些类可以通过 <QtSql> 引入,而且需要在 pro 文件中添加 QT += sql。
Qt Test,提供 Qt 程序的单元测试功能。这些类可以通过 <QtTest> 引入,而且需要在 pro 文件中添加 QT += testlib。
Qt Webkit,基于 WebKit2 的实现以及一套全新的 QML API。