lambda qt 参数 槽函数_Qt信号与槽的使用

1  新建工程

先创建一个控件基础工程,创建后的界面如下:

cf0d8774191e38a1fb767f4218cc7117.png

主函数我们不需要修改,就保持这样,对于C++的知识我不太理解。

上述代码中,执行到第7行的时候,会先去执行基类的构造函数,再执行MyWidget类的构造函数。我们只需要在构造函数中实现需要实现的功能。

构造函数对应在mywidget.cpp中:

27c18f5e14f531df9402fb3cdc80fb18.png

2  测试代码

实例一:标准的信号处理

测试目的:在主窗口中,新建两个按钮,功能如下:

按钮一的功能:按下按钮,关闭主窗口;

按钮二的功能:释放按钮,更改按钮二的文本,并隐藏按钮一。

由于在实现过程中,会用到信号与槽的知识,就先简单介绍一下基本知识,可能不正确,这只是我个人的理解:

信号:某一事件发生时产生,用于表示一个事件发生了。

槽:就是信号处理函数,用于指示当信号发生时,需要做出什么动作。

其中,我们connect函数来连接信号与槽之间的关系,函数的原型如下:

connect(const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type = Qt::AutoConnection);

举例说明:

connect(&b1, &QPushButton::pressed, this, &MyWidget::close);

/* &b1:信号发出者,指针类型

* &QPushButton::pressed:处理的信号,&发送者的类名::信号名字

* this:信号接收者

* &MyWidget::close:槽函数,信号处理函数 &接收的类名::槽函数名字

*/

不同的控件有哪些信号,可通过帮助文档查看,以QPushButton为例进行说明(点QPushButton,再按F1):

b8256847abf522901801d026cf5a3ed8.png这里没有看到signal函数,可能是从它的父类继承过来的,我们再看一下它的父类:

c3159144f324122f53d7475db1ebe73d.png

14f6e0051e2cd591c9e2ae3bf2d3bac7.png

eda784cff38fb1e4a59e33f6be7f1574.png

实现的相关代码

先在MyWidget类中实现两个按钮(mywidget.h):

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #ifndef MYWIDGET_H2 #define MYWIDGET_H

3

4 #include

5 #include

6

7 class MyWidget : publicQWidget8 {9 Q_OBJECT10

11 public:12 MyWidget(QWidget *parent = 0);13 ~MyWidget();14

15 private:16 QPushButton b1;17 QPushButton *b2;18

19 voidmyslot();20

21 };22

23 #endif //MYWIDGET_H

View Code

再在构造函数中实现两个按钮的功能(mywidget.cpp):

8f900a89c6347c561fdf2122f13be562.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值