开发者

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

开发者 https://www.devze.com 2022-12-02 14:04 出处:网络 作者: 超级小清
目录Qt按钮槽函数传递参数方法Qt槽函数的几种用法通过ui控件添加槽函数通过connect连接Qt按钮槽函数传递参数方法
目录
  • Qt按钮槽函数传递参数方法
  • Qt槽函数的几种用法
    • 通过ui控件添加槽函数
    • 通过connect连接

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

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

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

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

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

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

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

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

Qt槽函数的几种用法

通过ui控件添加槽函数

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

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

2.点击ui文件

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

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

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

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

4.右键按钮控件

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

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

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

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

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

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

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

通过connect连接

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

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

例如:

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

功能是按钮按下,执行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();
开发者_Go入门    });

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

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

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号