一、信号和槽机制

信号和槽用于两个对象之间的通信,我们希望任何对象都可以和其他对象进行通信。
    当一个特殊的事情发生时便可以发射一个信号,而槽就是一个函数,它在信号发射后被调用来相应这个信号。(强耦合)
    一个信号对应一个槽;一个信号也可以关联多个槽;多个信号关联一个槽;一个信号关联另一个信号。

二、mySignalSlot实例

新建QtGui应用>>项目名mySignalSlot>>基类QWidget>>新建Qt设计师界面>>Dialog without Buttons>>类名MyDialog

mydialog.h添加一个信号:

  1. signals:
  2. void dlgReturn(int); //自定义的信号

signals没有public、private、protected等限定符。并且只有申明没有实现。只有QObject类和其子类派生的类才能使用信号和槽机制。
    信号和槽在类申明最开始处添加Q_OBJECT宏(自动完成)

mydialog.ui>>添加Spin Box部件和Push Button部件>>PushButton显示为确定>>pushButton增加槽如下:

  1. void MyDialog::on_pushButton_clicked() //确定按钮
  2. {
  3. int value = ui->spinBox->value(); //获取输入的数值
  4. emit dlgReturn(value); //发射信号
  5. close(); //关闭对话框
  6. }

widget.h添加自定义槽

  1. private slots:
  2. void showValue(int value);

widget.ui>>拖入Label部件>>更改为"获取的值是:"

widget.cpp>>添加头文件#include "mydialog.h">>在构造函数中添加:

  1. MyDialog *dlg = new MyDialog(this);
  2. connect(dlg, SIGNAL(dlgReturn(int)), this, SLOT(showValue(int)));
  3. dlg->show();

这里创建了一个MyDialog,使用Widget作为父部件。然后将MyDialog类的dlgReturn()信号与Widget类的showValue()槽进行关联。
connect()原型:

  1. static QMetaObject::Connection connect(const QObject *sender, const char *signal,
  2. const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection);

第一个:发送信号的对象
第二个:要发送的信号
第三个:接收信号的对象
第四个:执行的槽
对于信号和槽,必须使用SIGNAL()和SLOT()宏将参数转化成const char *类型。

widget.cpp:

  1. void Widget::showValue(int value)
  2. {
  3. ui->label->setText(tr("获取的值是:%1").arg(value));
  4. }

Qt的信号和槽机制的更多相关文章

  1. qt中信号与槽机制

    一. 简介 就我个人来理解,信号槽机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信号与槽来代替函数指针,使程序更安全简洁. 信号和槽机制是 Qt 的核心机制,可以让编程人员将互不 ...

  2. QT的信号与槽机制介绍

      信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗 ...

  3. Qt 的信号与槽机制介绍(10个要注意的问题)

    QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT ...

  4. 【qt】QT 的信号与槽机制

    QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT ...

  5. QT的信号和槽机制简介

    信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗口部 ...

  6. 自己用纯C++实现简单的QT中信号与槽机制

    前天在我很久以前的一篇博文 (http://blog.csdn.net/liukang325/article/details/45742675) 中有人回复说看到我的博文很激动,希望我详细介绍一下信号 ...

  7. QT 的信号与槽机制介绍

    https://www.ibm.com/developerworks/cn/linux/guitoolkit/qt/signal-slot/ http://www.kuqin.com/qtdocume ...

  8. Qt源码分析之信号和槽机制

    Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的说法,简单点说就是如何在一个类的一个 ...

  9. 关于Qt信号与槽机制的传递方向性研究(结论其实是错误的,但是可以看看分析过程)

    最近由于项目的需求,一直在研究Qt.信号与槽机制是Qt的一大特色,该机制允许两者间传递参数,依次来实现对象间的通信.这个参数会分别存在于信号的参数列表和槽函数的参数列表中.需要注意的是,若将槽函数绑定 ...

随机推荐

  1. fileupload组件之上传与下载的页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  2. http 换成 https

    UPDATE SYS_MENU M SET M.href = ( SELECT CASE WHEN substr(N.href, 0, 5) = 'http:' THEN 'https:'||subs ...

  3. 【HDOJ6602】Longest Subarray(线段树,vector)

    题意:给定一个长为n的序列,第i个数a[i]都是一个[1,c]中的整数 如果一段序列[l,r]中出现过的数字出现次数都>=K则称其为好的序列 求最长的好的序列的长度 n,k,c,a[i]< ...

  4. 远程桌面按键失效变成快捷键(远程桌面连接时会自动按下win键)

    三个电脑快捷键 (无意中学会三个快捷键了.....)win + L 锁屏win + D 切换到桌面win + F 搜索 在使用远程桌面连接Windows 2008操作系统,发现一个很烦的问题,经常发现 ...

  5. “pod repo push”遇到的2个问题的解决方案

    podspec文件push到遇到的第一个问题,将进行记录,主要是参考了下面大神的解决方案,主要是为了方便学习和记录 第一个问题: xcrun: error: invalid active develo ...

  6. django中常见命令总结

    一,创建一个django项目: django-admin.py startproject mysite二,在mysite目录下创建blog应用: python manage.py startapp b ...

  7. python最近邻分类器KNN算法

    1. KNN算法 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最 ...

  8. Toposort(拓扑排序)dfs递归模板

    最近刷了几题拓扑排序的题,记录一下拓扑排序 在有向图中,并且按照一定的规则(题目所给的规则)排序.如果图中出现了有向环的话就无法排序了. int gap[maxn][maxn];//记录下有向边 in ...

  9. soj#551 loj#2833 帐篷

    传送门 分析 dp[i][j]表示考虑了i行j列的方案数 我们每次考虑三种情况: 一个点自己放 两个点在同一行 两个点在同一列 代码 #include<bits/stdc++.h> usi ...

  10. 不同字符串,HashCode可能相同

    不同的字符串,hashcode可能相同. 先看例子: @Test public void test6(){ System.out.println("ABCDEa123abc".ha ...