【QT】3_1_1_Qt信号和槽的简单介绍及使用

作者:永恒0852永恒0852发布时间:2017-11-13 21:50
1.什么是信号和槽?
       如前面我们的案例,按钮的存在是没有实际意义的,点击和不点击按钮都没有执行任何的操作,那么这很明显不是我们想要的,所以我们需要使用信号和槽来解决这个问题,当我们按下按钮时,必须执行我们规定好的操作:
        1)当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。
        2)如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。
        3)也就是说,当信号发出时,被连接的槽函数会自动被回调。

2.信号和槽的连接
        1)使用信号和槽,类需要继承QObject,并且添加Q_OBJECT宏:
    2.png
   3.png
4.使用信号和槽的案例
        1)创建一个无ui文件的QWidget项目,其他内容,和之前的不变
4.png
        2)运行结果(操作如图,按钮内容说明)
5.png

5.信号和槽操作的代码(widget.cpp)

{
this->resize(300,300); //设置注窗口大小

b0.setText("我是永存的"); //设置按钮b0参数
b0.setParent(this);
b0.move(100,100);

b1.setText("最小化窗口"); //设置按钮b1参数
b1.setParent(this);
b1.move(00,00);
//b1,发出的点击信号,当前窗口接收,调用接收对象的最小化操作的槽函数
connect(&b1,&QPushButton::pressed,this,&Widget::showMinimized);

b2.setText("关闭窗口"); //设置按钮b2参数
b2.setParent(this);
b2.move(200,00);
//b2,发出的点击信号,当前窗口接收,调用接收对象的最关闭操作的槽函数
connect(&b2,&QPushButton::pressed,this,&Widget::close);

b3.setText("隐藏笑脸按钮"); //设置按钮b3参数
b3.setParent(this);
b3.move(000,200);
//b3,发出的点击信号,b0接收,调用接收对象的隐藏操作的槽函数
connect(&b3,&QPushButton::pressed,&b0,&QPushButton::hide);

b4.setText("显示笑脸按钮"); //设置按钮b4参数
b4.setParent(this);
b4.move(200,200);
//b4,发出的点击信号,b0接收,调用接收对象的显示操作的槽函数
connect(&b4,&QPushButton::pressed,&b0,&QPushButton::show);
}
6.完整的代码(注意解压后不能有中文路径)


/*************************************************************
*   温馨提示:
*            为了不影响文章的可读性,本站图片均不自动加水印。
*            除非注明,文章均由"永恒0852"整理发布,欢迎转载。
*            否则转载请注明本文地址:http://www.yongheng0852.com/qt/42.html
**************************************************************/


评论