Qt实现类似sendmessage和postmessage发送自定义消息
2016-02-17 19:29
633 查看
在用MFC中时常会用到sendmessage和postmessage特别是其他线程对GUI线程操作时,但是在QT中没有直接可用的相应函数。
QT中要达到相同的效果可以用信号和槽
在slots下自定义槽
private slots:
void OnRevertPhone(unsigned int ret, QString phone);
signals下自定义信号
signals:
void explains(); //如果要自定义槽和信号, explains信号是必须的
void revertPhone(unsigned int ret, QString password);
上面的信号只要声明就可以了,不需要实现,但是槽必须实现。
而且类声明中必须包含Q_OBJECT宏
关联信号与槽
connect(this, SIGNAL(revertPhone(unsigned int, QString)), this, SLOT(OnRevertPhone(unsigned int, QString)), Qt::QueuedConnection);
这里Qt::ConnectionType用Qt::QueuedConnection就是队列的形式,效果类似于postmessage;
然后在要发送消息的地方调用信号
emit revertPhone(*pRetcode, strPhone); //发送自定义信号前面必须用emit。
如果要类似sendmessage则用Qt::AutoConnection就可以了,也是Qt::DirectConnection
QT中要达到相同的效果可以用信号和槽
在slots下自定义槽
private slots:
void OnRevertPhone(unsigned int ret, QString phone);
signals下自定义信号
signals:
void explains(); //如果要自定义槽和信号, explains信号是必须的
void revertPhone(unsigned int ret, QString password);
上面的信号只要声明就可以了,不需要实现,但是槽必须实现。
而且类声明中必须包含Q_OBJECT宏
关联信号与槽
connect(this, SIGNAL(revertPhone(unsigned int, QString)), this, SLOT(OnRevertPhone(unsigned int, QString)), Qt::QueuedConnection);
这里Qt::ConnectionType用Qt::QueuedConnection就是队列的形式,效果类似于postmessage;
然后在要发送消息的地方调用信号
emit revertPhone(*pRetcode, strPhone); //发送自定义信号前面必须用emit。
如果要类似sendmessage则用Qt::AutoConnection就可以了,也是Qt::DirectConnection
相关文章推荐
- QT tableview用法
- Qt递归拷贝和删除目录
- QT 判断是否是64位机
- QT动态库路径查找
- 6410 qtopia2.2.0开发:一 编译PC qtopia2.2.0
- QT学习笔记1
- linux上QT调用Opencv庫
- QT无标题栏窗体移动
- QT 语言引擎32位与64位
- QTableView中根据文件类型显示图标
- QT学习二:工具栏
- QT操作剪切板
- QT Model/View框架中更新Model时View的显示问题
- QT学习一:菜单
- Qt 汉字乱码
- Qt浅谈之四十二钟表摆动显示百分比
- Qt按钮三态
- QT右键菜单
- Qt中使用多线程
- Qt添加icon图标(主要用于treeview或tableview的item前)