Qt中简单的按钮槽函数传递参数方法
作者:超级小清
这篇文章主要介绍了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来声明槽函数。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。