Qt基础 06_信号和槽(二)自定义信号和槽的实例
来源:互联网 发布:嘉嘉购物业软件 编辑:程序博客网 时间:2024/06/04 18:39
/******************************************************
* 课程名 :QT编程
* 时 间 :2017年6月2日(周五)下午后半段
* 工程名 :07-signalSlot-2
* 类 名 : signaldialog2
* 内 容 :信号和槽
* CSDN :Qt基础 06_信号和槽(二) 自定义信号和槽的实例
******************************************************/
目标:新闻被发布,读者自动接收。
一、新闻部分
步骤一:添加一个“C++ Class”
步骤二:news.cpp中添加头文件#include < QObject >
步骤三:在News.h中添加属性
private: QString _name ; //新闻发布者 QString _type ; //新闻类型 QString _content ; //新闻内容
步骤四:重载函数News
public: explicit News(QObject *parent = 0); //写一个重载函数 News(QString name ,QString type ,QString content , QObject *parent = 0): _name(name),_type(type),_content(content),QObject(parent) {}//参数列表
步骤五:定义信号
signals: void newMessage(QString name ,QString type ,QString content ); //发送新闻
步骤六:定义发送新闻的函数
public: void sendNews(void) { //发送新闻 emit newMessage(_name , _type , _content); }
二、读者部分
步骤一:添加一个“C++ Class”Reader;
步骤二:在reader.h中添加属性
private: QString _name ; //读者姓名
步骤三:构造函数改为:
explicit Reader(QString name , QObject *parent = 0);
并在Reader.cpp中: Reader::Reader(QString name , QObject *parent) :
QObject(parent),_name(name)
{
}
步骤四:在reader.h中定义槽函数,并把接收到的信息打印在控制台
public slots: void readMessage(QString name ,QString type ,QString content) { qDebug() << _name << "看了" << name << "发布的" << type << "新闻" ; qDebug() << "新闻内容是" << content ; }
三、创建新闻事件,发布后读者阅读
步骤一:包含头文件#include “news.h”和#include “reader.h”
步骤二:在main.cpp中:
int main(int argc, char *argv[]){ QApplication a(argc, argv); signaldialog1 w; w.show(); News n1("腾讯新闻","体育新闻","篮球决赛"); News n2("新浪新闻","八卦新闻","明星事件"); News n3("网易新闻","科技新闻","手机发布"); Reader r1("reader1"); Reader r2("reader2"); //建立连接 —— 订阅新闻 //读者一:对1体育新闻感兴趣 QObject::connect(&n1,SIGNAL(newMessage(QString,QString,QString)), &r1,SLOT(readMessage(QString,QString,QString))); //读者一:对2八卦新闻感兴趣 QObject::connect(&n2,SIGNAL(newMessage(QString,QString,QString)), &r1,SLOT(readMessage(QString,QString,QString))); //读者二:对2八卦新闻感兴趣 QObject::connect(&n2,SIGNAL(newMessage(QString,QString,QString)), &r2,SLOT(readMessage(QString,QString,QString))); //读者二:对3科技新闻感兴趣 QObject::connect(&n3,SIGNAL(newMessage(QString,QString,QString)), &r2,SLOT(readMessage(QString,QString,QString))); //建立连接 —— 发布新闻 n1.sendNews(); n2.sendNews(); n3.sendNews(); return a.exec();}
源代码:http://download.csdn.net/detail/c_estbon/9864708
- Qt基础 06_信号和槽(二)自定义信号和槽的实例
- qt基础学习1_信号和槽的操作
- Qt基础 05_信号和槽(一)
- Qt自定义信号和槽
- Qt自定义信号和槽
- Qt自定义信号和槽
- QT 自定义信号和槽
- QT中自定义的信号和槽
- Qt基础: 信号和槽
- 自定义的信号和槽实例
- qt学习(二):信号和槽
- 【QT】信号和槽机制(二)
- QT的信号和信号槽
- QT 自定义函数 自定义信号和槽
- QT 自定义函数 自定义信号和槽
- QT 自定义函数 自定义信号和槽
- Qt笔记_信号和槽
- Qt程序学习(二)------信号和槽的机制
- python学习记录1
- Red5应用开发(一) 环境搭建
- tp中where条件拼接!!
- FlexboxLayout
- Linux摄像驱动四:USB摄像驱动分析
- Qt基础 06_信号和槽(二)自定义信号和槽的实例
- 安卓自定义控件之仪表盘
- 物理静态资源路径映射逻辑资源路径
- 从0到1手撸FFmpeg播放器[1]:FFmpeg的so库编译
- 修改eclipse文件的编码格式
- Python-杂记
- 统计以a开头的词
- 学习9:rosed命令的简单介绍 + 创建ROS消息和ROS服务。
- xgboost详解