注:
只有继承了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。