Qt中简单的按钮槽函数传递参数方法

 更新时间:2022年11月10日 15:09:30   作者:超级小清  
这篇文章主要介绍了Qt中简单的按钮槽函数传递参数方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Qt按钮槽函数传递参数方法

Qt中一个典型的点击按钮触发槽函数的写法是:

connect(btn, &QPushButton::clicked, this, &class::func);

当你希望在点击按钮后再向槽函数中传递参数,这种写法就无法做到了。

其原因是槽函数要和信号的参数完全对应,如果修改了传给槽函数的参数,点击按钮的信号就无法处理。

这里给出一个比较简单的传参方法,在信号槽中使用lambda表达式,如:

connect(btn, &QPushButton::clicked, this, [=](){func(i);});

根据参数的数量对应修改func(i)里面的内容,这里只能传单个参数。

Qt槽函数的几种用法

通过ui控件添加槽函数

这种方法是在Qt的ui文件中,添加一个控件,然后点击右键,选择具体的槽函数,具体操作如下:

1.新建一个Qt项目(略过)

2.点击ui文件

3.添加一个控件(这里添加一个按钮(PushButton))

4.右键按钮控件

5.选择相应的事件(这里选择clicked)

6.在mainwindow.h和mainwindow.cpp中会自动添加两段代码,如下:

然后就可以在函数中添加相关代码来实现。

通过connect连接

**1、首先介绍第一种方式,通过SIGNAL和SLOT来实现。**格式如下:

connect(sender, SIGNAL(), receiver, SLOT());
  • sender是发送对象
  • SINGAL是信号
  • receiver是接收对象
  • SLOT是槽函数

例如:

connect(ui->pushButton, SIGNAL(clikced()), this, SLOT(close)));

功能是按钮按下,执行close()函数. 

2、同样使用connect,但是不使用SIGNAL和SLOT来实现。例如:

connect(saveAction, &QAction::triggered, this, &MainWindow::save);

事件发送者可以是ui中添加的控件对象,也可以是纯代码新建的对象。这里的信号是&QAction::triggered,槽函数是&MainWindow::save。意思是saveAction这个控件触发的时候,执行save这个函数,这里使用的指针来调用函数。

在这种方式下还有一种方式,使用lambda表达式。例如:

connect(cancelAction, &QAction::triggered, this, [=](){
       ui->textEdit->undo();
    });

这里执行的功能是触发控件执行撤销操作。通过lambda来声明槽函数。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一篇文章详细解释C++的友元(friend)

    一篇文章详细解释C++的友元(friend)

    这篇文章主要为大家详细介绍了C++的友元(friend),文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C语言动态内存的分配最全面分析

    C语言动态内存的分配最全面分析

    动态内存是相对静态内存而言的。所谓动态和静态就是指内存的分配方式。动态内存是指在堆上分配的内存,而静态内存是指在栈上分配的内存,本文带你深入探究C语言中动态内存的管理
    2022-08-08
  • 将正小数转化为2-9进制小数的实现方法

    将正小数转化为2-9进制小数的实现方法

    本篇文章对正小数转化为2-9进制小数的实现方法进行了介绍,需要的朋友参考下
    2013-05-05
  • C++虚继承原理与类布局深度分析

    C++虚继承原理与类布局深度分析

    这篇文章主要介绍了C++虚继承原理与类布局分析,本文的目标是探究虚继承的实现方式和类布局(Class Layout)的具体规则,需要的朋友可以参考下
    2024-04-04
  • 深入理解atoi()与itoa()函数的用法

    深入理解atoi()与itoa()函数的用法

    本篇文章是对atoi()与itoa()函数的用法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言kmp算法简单示例和实现原理探究

    C语言kmp算法简单示例和实现原理探究

    这篇文章主要介绍了C语言kmp算法简单示例和实现原理探究,本文用简洁的语言说明KMP算法的原理,并给出了示例,需要的朋友可以参考下
    2014-09-09
  • C++代码实现扫雷游戏

    C++代码实现扫雷游戏

    这篇文章主要为大家详细介绍了C++代码实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • C++嵌套类与局部类详细解析

    C++嵌套类与局部类详细解析

    从作用域的角度看,嵌套类被隐藏在外围类之中,该类名只能在外围类中使用。如果在外围类之外的作用域使用该类名时,需要加名字限定
    2013-09-09
  • 详解C/C++如何发送与接收Kafka消息

    详解C/C++如何发送与接收Kafka消息

    系统之间通信方式很多如:系统之间调用(http/rpc等),异步间接调用如发送消息、公共存储等,算法工程为C/C++工程,本文将介绍如何在C/C++中如何发送与接收Kakfa消息(包含:Kafka的SASL认证方式),并提供了详细的源码和讲解,需要的朋友可以参考下
    2024-07-07
  • java string对象上的操作,常见的用法你知道吗

    java string对象上的操作,常见的用法你知道吗

    今天给大家带来的是关于Java的相关知识,文章围绕着Java String类用法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-08-08

最新评论