在Qt中,如果想要将std::function
或函数指针传入QObject::connect
函数的槽函数参数中,可以通过以下步骤实现:
std::function
或函数指针参数,该参数用于接收传入的回调函数。以下是一个示例代码:
// 定义一个信号函数
class MyObject : public QObject
{
Q_OBJECT
public:
void mySignal(int param)
{
emit signalTriggered(param);
}
signals:
// 定义一个带参数的信号
void signalTriggered(int param);
};
// 定义一个槽函数,接收回调函数
class Receiver : public QObject
{
Q_OBJECT
public slots:
void slotFunction(std::function<void(int)> callback)
{
// 在槽函数中调用传入的回调函数
callback(42);
}
};
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
MyObject myObj;
Receiver receiver;
// 连接信号和槽函数
QObject::connect(&myObj, &MyObject::signalTriggered, &receiver, &Receiver::slotFunction);
// 定义一个回调函数
std::function<void(int)> callback = [](int value) {
qDebug() << "Callback called with value:" << value;
};
// 调用信号函数,触发槽函数执行回调函数
myObj.mySignal(42);
return app.exec();
}
在上述示例中,通过使用std::function
作为回调函数的容器,可以实现将其作为槽函数的参数传入。在槽函数中调用传入的回调函数,从而实现了将std::function
或函数指针传入Qt的connect
函数。
领取专属 10元无门槛券
手把手带您无忧上云