zoukankan      html  css  js  c++  java
  • Qt学习笔记 信号和槽

    槽和普通c++成员函数一样只可以为虚函数,也可以被重用,可以是公有的也可以是私有的,也可以被其它的c++函数调用;

    参数也是任意的

    唯一不同的是本槽和信号是可以连在一起的,和c#的事件差不多。相连后每当发射这个信号后就会自动调用这个槽

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

    sender就发送信号的Qobject指针

    receiver是槽的Qobject指针

    signal和slot是只有形参的函数名。SIGNAL和SLOT宏会把它们的参数转换为相应的字符串

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

    在发射信号的时候顺序不确定

    .h

        private slots:
            void Open1();
            void Open2();

    .app

    myQt::myQt(QWidget *parent)
        : QMainWindow(parent)
    {
        ui.setupUi(this);
        QObject::connect(ui.btn_Open,SIGNAL(clicked()),this,SLOT(Open1()));
        QObject::connect(ui.btn_Open,SIGNAL(clicked()),this,SLOT(Open2()));
    }
    
    void myQt::Open1()
    {
        QMessageBox msg;
        msg.setText("Open1!");
        msg.exec();
    }
    void myQt::Open2()
    {
        QMessageBox msg;
        msg.setText("Open2!");
        msg.exec();
    }

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

    QObject::connect(ui.btn_Open,SIGNAL(clicked()),this,SLOT(Open1()));
        QObject::connect(ui.btn_ClickBool,SIGNAL(clicked()),this,SLOT(Open1()));

    3.一个信号可以与另外一个信号相连

        QObject::connect(ui.btn_Open,SIGNAL(clicked()),ui.btn_ClickBool,SLOT(click()));

    4连接可以被删除

    删除所有的连接

        QObject::disconnect(ui.btn_Open,0,0,0);
        //或者
        ui.btn_Open->disconnect();

    删除指定的连接

        QObject::disconnect(ui.btn_Open,SIGNAL(clicked()),0,0);
        //或者
        ui.btn_Open->disconnect(SIGNAL(clicked()));

    删除两个关联对象的连接

        QObject::disconnect(ui.btn_Open,0,ui.btn_ClickBool,0);
        //或者
        ui.btn_Open->disconnect(ui.btn_ClickBool);

    要把信号成功的连接到槽(或者是连接到另外一个信号),它们的参数必须具有相同的顺序和相同的类型。

    这里有个例外,如果信号的参数比它所连接的槽的参数多,那么多余的参数将会被忽略

  • 相关阅读:
    python通过openpyxl操作excel
    python实现将字符串中以大写字母开头的单词前面添加“_”下划线
    python unittest setUp 和 setUpClass 区别
    python selenium 定制启动Chrome的选项注意事项(十九)
    Python 回调函数
    python 面试题
    python 常用的模块
    MySQL通过分组计算百分比
    mybatis 动态sql 的笔记 以及标签
    resultMap自定义映射---8.3.1. 解决列名(表中的字段名称)和实体类中的属性名不一致
  • 原文地址:https://www.cnblogs.com/li-peng/p/3650682.html
Copyright © 2011-2022 走看看