首页 > 解决方案 > 使用 lambda 的 QT 连接函数

问题描述

我有一个带按钮的列表,每个人都有一个名称(str1 是带有名称的 QString var),我想将它们与一个带参数的函数连接起来,但我不明白该怎么做。

 QPushButton *btn  = new QPushButton(str1);
 connect(btn,SIGNAL(clicked()),this,SLOT(activeProjectClick()));

这是我能做的,但在这里我不能使用带参数的函数。我读到我必须将 connect 方法与 lambda 一起使用,但我不明白该怎么做。假设我想调用函数 F1(QString str) ,我该怎么做?

标签: qtlambda

解决方案


我想通了,我必须在 [] 中声明 var

或者,&在 [] 内使用

QString str;
for(QPushButton *btn : buttonsList) { connect(btn, &QPushButton::clicked, [&]({F1(str); });}

推荐阅读