繁体   English   中英

QTimer,参数化插槽

[英]QTimer, Parametrized slot

我正在编写用于继电器控制器的应用程序。 我有一个打开/关闭继电器的功能:

void setRelay(unsigned int relay_number, bool state);

现在,我想按一些按钮来打开继电器,例如1sek。

我想做这样的事情:

void on_button_clicked()
{
    setRelay(1, true);
    QTimer::singleShot(1000,this,SLOT(setRelay(1,false)))
}

是的,我知道信号不会那样工作。 有没有办法改变定时器发出的信号,所以它将关闭继电器。 我最近想到的是:

QTimer::singleShot(1000,this,SLOT(relay_1_off()));

然后我必须为每个继电器腾出一个插槽以将其关闭:

void relay_1_off(){
    setRelay(1,false);
}

是否可以在不占用太多插槽的情况下完成操作,而有人可以使用一些更聪明的方法? 问候

如果您使用的是Qt5,则可以使用lambda函数:

无效的QTimer :: singleShot(int msec,Functor functor)

QTimer::singleShot(1000, [&](){
    setRelay(1,false);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM