zoukankan      html  css  js  c++  java
  • 第四讲 深入介绍信号与槽

    本文概要:讲解Qt的信号与槽机制,涉及信号与槽的连接方法,连接条件等。

    可以使用信号与槽机制的类

    信号与槽机制是在QObject类中实现的,这种机制能够用与任何QObject子类中,但是应该在类中加入Q_OBJECT宏。

    槽的介绍

    槽与普通的c++成员函数几乎一样;槽能够被声明为虚函数,能被重载,能够被其他函数调用等,与c++普通

    的成员函数不同之处仅仅在于槽可以与信号连接在一起,每当发射与槽可以接受的信号时,槽会被自动调用。

    槽与信号的连接方法:

    connect(sender, SIGNAL(signal), receiver, SLOT(slot));

    sender和receiver都应该为指向QObject的指针,signal与slot为不带参数的函数名;SIGNAL与SLOT宏会将它们的参数转换为相应的字符串。

    槽与信号连接的可能情况:

    一个信号连接多个槽

    connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int))); connect(slider, SIGNAL(valueChanged(int)), this, SLOT(updataStatusBarIndicator(int)));

    当发射信号时,会以不确定的顺序调用这些槽;

    多个信号连接一个槽

    connect(lcd, SIGNAL(overflow()), this, SLOT(handleMathError())); connect(calculator, SIGNAL(divisionByZeor()), this, SLOT(handleMathError()));

    无论发射那个信号都会调用连接的槽;

    信号可以与另外一个信号连接:

    connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SIGNAL(updataRecord(const QString &)));

    当发射第一个信号时,第二个信号也会被发送,除此之外,信号的相互连接与信号与槽的连接难以区分。

    信号与槽(或者信号)的连接可以被移除

    disconnect(lcd, SIGNAL(overflow( )), this, SLOT(handleMathError( )));

    一般情况下较少用到。另外,当删除对象时,Qt会自动与这个对象相关的所有连接;

    信号与槽(或者信号)成功连接的条件

    信号与槽的顺序必须有相同的顺序与相同的类型,如果信号的参数比它所连接的槽的参数多,多余的参数会被忽略。另外,在信号与槽使用connect()连接时,

    信号与槽的名字中不能包含参数名。

     

  • 相关阅读:
    《需求工程——软件建模与分析》读后感之三
    项目目标文档
    利益相关者描述案例
    《需求工程——软件建模与分析》读后感之二
    《需求工程——软件建模与分析》读后感之一
    专业实训题目需求分析
    《代码之美》读后感
    计算“1”的数量
    团队冲刺第九天
    linux df 命令
  • 原文地址:https://www.cnblogs.com/tallisHe/p/4419168.html
Copyright © 2011-2022 走看看