美文网首页
深入介绍信号和槽

深入介绍信号和槽

作者: 诸事圆成 | 来源:发表于2018-08-02 18:56 被阅读0次

1.槽和普通的C++成员函数差不多——虚函数|重载|public|private|被其他函数调用|参数是任意的。
唯一的不同:槽可以和信号连接在一起

connect(sender,SIGNAL(signal),receiver,SLOT(slot));
//sender;receive是指向QObject的。

1)一个信号可以连接多个槽

connect(slider,SIGNAL(valueChanged(int)),spinBox,SLOT(setValue(int));
connect(slider,SIGNAL(valueChanged(int)),this,SLOT(updateStatusBarIndicator(int)));
//在发射这个信号的时候,会以不确定顺序一个接一个的调用这些槽

  1. 多个信号可以连接同一个槽

connect(lcd,SIGNAL(overflow()),this,SLOT(handleMathError()));
connect(calcluator,SIGNAL(divisionByZero()),this,SLOT(handleMathError()));
//无论发射那个信号,都会调用这个槽

3)一个信号可以和另一个信号连接

connect(lineEdit,SIGNAL(textChanged(const QString&)),this,SIGNAL(updateRecord(const QString&)));
当发射第一个信号时,也会发射第二个信号

4)连接可以被移除
disconnect(lcd,SIGNAL(overflow()),this,SLOT(handleMathError()));
这种情况用到很少
///////////////////////////////////////////////////////////////////////////////////////////////////////////
2.要把信号成功连到槽(或者另一个信号),它们的参数必须具有相同的顺序和相同的类型。

connect(ftp,SIGNAL(rawCommandReply(int,const QString&)),this,SLOT(processReply(int,const QString &)));

列外--如果信号的参数比槽多,多余的参数会被忽略

connect(ftp,SIGNAL(rawCmmandReply(int,const QString&)),this,SLOT(checkErrorCode(int)));

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
我们仅仅在窗口部件之间使用了信号和槽。但是这种机制本身是在QObject中实现的,并不只局限于图形用户界面编程中。这种机制可以用于任何QObject的子类中:

class Employee:public QObject
{
      Q_OBJECT
  public:
      Employee(){mySalary = 0;}
      int salary()const {return mySalary;}
  public slots:
      void setSalary(int newSalary);
  signals:
      void salaryChanged(int newSalary);
  private:
      int mySalary;

};
void Employee::setSalary(int newSalary)
{
        if(newSalary != mySalary){
                 mySalary =  newSalary;
                 emit salaryChanged(mySalary);
         }
}

相关文章

  • 深入介绍信号和槽

    1.槽和普通的C++成员函数差不多——虚函数|重载|public|private|被其他函数调用|参数是任意的。唯...

  • Qt信号槽(signal and slot)机制初识

    写在前面 本文主要介绍Qt信号槽(signal and slot)机制,介绍Qt信号槽机制的含义,用途以及如何简单...

  • 信号和槽

    新建项目(application->Qt widgets application)->配置信息(详细信息->bas...

  • WebRTC信号和槽机制

    信号和槽的实现原理大致是这样的 : 信号对象持有连接,连接里记录了槽对象的地址和槽函数(某个成员函数)地址信号对象...

  • QT 练习2:信号和槽

    信号和槽 DEMO

  • Qt学习笔记(四)事件处理机制

    1、信号和槽 Qt中的事件处理机制叫“信号和槽”,signal和slot。模型:对象a中有一个信号signal:X...

  • PyQt信号和槽

    qt里的信号和槽除了可以传递行为外,还可以传递数据,这里以传递DataFrame为例

  • 信号与槽(SIGNAL-SLOT)

    一、系统设置槽-信号 在QtCreator中建立槽信号事件 设置槽事件 设置信号事件 二、自定义槽信号事件 设置对...

  • Qt 信号阻塞 和 断开信号槽

    原文地址: https://blog.csdn.net/u014339020/article/details/79...

  • 信号槽

    【Qt】信号和槽对值传递参数和引用传递参数的总结[https://www.cnblogs.com/liushui-...

网友评论

      本文标题:深入介绍信号和槽

      本文链接:https://www.haomeiwen.com/subject/bqvsvftx.html