gpt4 book ai didi

c++ - QTimer,参数化槽

转载 作者:搜寻专家 更新时间:2023-10-31 01:30:37 24 4
gpt4 key购买 nike

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

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 函数:

void QTimer::singleShot(int msec, Functor functor)

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

关于c++ - QTimer,参数化槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47515031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com