首页 > 解决方案 > 延迟发射信号

问题描述

我想要实现的目标是发出一个信号,但在实际发出之前将其延迟一段时间。

我的想法是这样的:

emitLater(QObject *obj, QEvent *event, int msDelay)
{
    QTimer...
    connect(timout to obj and event...
    start timer with msDelay...

    //maybe I might need a public timer of some sort but the idea is clear
}

因此,此方法因QEvent参数失败,因为信号无法转换为QEvents.

我尝试使用 std::bind 进行几种变体调用,但无法正常工作:

//the call
std::function<void(void)> signal = std::bind(&CustomPushButton_Header::clicked, &uiWindow->btnHeader_left); //just a random button to connect a valid signal
emitLater(signal, 2000);

//the function
emitLater(std::function<void(void)>, int msDelay)
{
    qDebug() << "hi";
}

我希望有一个适用于所有对象和所有信号的解决方案......也许只有调用该函数的部分。我认为延迟会很容易。

或者你有一个不同的甚至更简单的方法。那样就好了。

我查看的一些来源:

标签: qtparameterssignals

解决方案



推荐阅读