gpt4 book ai didi

qt - 如何在应用程序本身 (Qt) 中检测 Qt GUI 应用程序是否处于空闲状态?

转载 作者:行者123 更新时间:2023-12-04 06:46:53 26 4
gpt4 key购买 nike

如何检测 GUI 应用程序何时空闲(即没有用户交互)一段时间?

我有 n 个 Qt 屏幕,我想在应用程序空闲 5 秒时显示日期时间屏幕,当我单击日期时间屏幕时,它应该返回到最后一个屏幕。

目前我正在使用下面的代码,现在如何检查系统是否空闲 5 秒带来一个新表单,当一些 body 鼠标移动/点击它应该回到最后一个表单。

CustomEventFilter::CustomEventFilter(QObject *parent) :
QObject(parent)
{
m_timer.setInterval(5000);
connect(&m_timer,SIGNAL(timeout()),this,SLOT(ResetTimer()));
}

bool CustomEventFilter::eventFilter(QObject *obj, QEvent *ev)
{
if(ev->type() == QEvent::KeyPress ||
ev->type() == QEvent::MouseMove)
{
ResetTimer();
return QObject::eventFilter(obj, ev);

}
else
{

}
}

bool CustomEventFilter::ResetTimer()
{
m_timer.stop(); // reset timer

}

我的 main.cpp 看起来像这样:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainForm w;
w.show();
CustomEventFilter filter;
a.installEventFilter(&filter);

return a.exec();


}

谢谢。

最佳答案

覆盖 QCoreApplication::notify和鼠标/键盘事件的计时器?

(或者只是存储事件的时间并让计时器定期检查该值,这可能比一直重置计时器要快。)

class QMyApplication : public QApplication
{
public:
QTimer m_timer;

QMyApplication() {
m_timer.setInterval(5000);
connect(&m_timer, SIGNAL(timeout()), this, SLOT(app_idle_for_five_secs());
m_timer.start();
}
slots:
bool app_idle_for_five_secs() {
m_timer.stop();
// ...
}
protected:
bool QMyApplication::notify ( QObject * receiver, QEvent * event )
{
if (event->type == QEvent::MouseMove || event->type == QEvent::KeyPress) {
m_timer.stop(); // reset timer
m_timer.start();
}
return QApplicaiton::notify(receiver, event);
}
};

关于qt - 如何在应用程序本身 (Qt) 中检测 Qt GUI 应用程序是否处于空闲状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6532490/

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