qt c++用setAutoRepeatDelay 实现长按触发函数 且与单次区分
在Qt中,可以使用setAutoRepeatDelay方法来设置按下按钮后的自动重复延迟时间。通过设置适当的重复延迟时间,可以实现长按触发函数。
首先,确保你的按钮已经设置了autoRepeat属性为true,以启用自动重复功能。然后,使用setAutoRepeatDelay方法设置按下按钮后的自动重复延迟时间(以毫秒为单位)。
接下来,连接按钮的pressed信号到你的槽函数。在槽函数中,你可以通过判断按钮的isAutoRepeat属性来区分长按和单次触发。如果isAutoRepeat为true,则表示按钮是在自动重复状态下触发的,即长按触发;如果isAutoRepeat为false,则表示按钮是在单次按下时触发的。
下面是一个示例代码:
// 设置按钮的自动重复延迟时间为500毫秒
button->setAutoRepeatDelay(500);
// 连接按钮的pressed信号到槽函数
connect(button, &QPushButton::pressed, this, &MyClass::buttonPressed);
...
// 槽函数
void MyClass::buttonPressed()
{
QPushButton* button = qobject_cast<QPushButton*>(sender());
if (button->isAutoRepeat())
{
// 长按触发
qDebug() << "Long press";
}
else
{
// 单次触发
qDebug() << "Single press";
}
}
在上面的例子中,当按钮被长按时,会打印"Long press";当按钮被单次按下时,会打印"Single press"。你可以根据实际需求在槽函数中执行相应的操作
原文地址: http://www.cveoy.top/t/topic/hCZ2 著作权归作者所有。请勿转载和采集!