qt c++ 写一个案例:15分钟内如果鼠标和键盘无操作就弹出弹窗
时间: 2024-10-22 18:11:43 浏览: 24
基于Qt和C++开发的桌面弹窗式备忘录源码.zip
在Qt C++中,我们可以利用QApplication、QTimer以及QObject的事件处理机制来实现在15分钟内如果鼠标和键盘无操作则弹出一个警告窗口的功能。下面是一个简单的例子:
```cpp
#include <QApplication>
#include <QWidget>
#include <QTimer>
#include <QEvent>
class NoActivityWindow : public QWidget
{
public:
explicit NoActivityWindow(QWidget *parent = nullptr) : QWidget(parent)
{
setWindowModality(Qt::ApplicationModal); // 设置窗口模式为模态,防止用户在弹窗期间进行其他操作
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &NoActivityWindow::showWarning);
timer->start(900000); // 每隔15分钟触发一次,单位毫秒
}
private slots:
void showWarning()
{
QMessageBox::warning(this, "无活动提醒", "长时间未操作,请注意!");
close(); // 弹出警告后关闭窗口
}
protected:
void event(QEvent *event)
{
if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::KeyPress) // 检查鼠标点击或按键事件
{
emit activityDetected();
return QWidget::event(event);
}
else
{
return false; // 其他非活动事件直接忽略,继续计时
}
}
signals:
void activityDetected(); // 信号触发,表示有操作发生
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
NoActivityWindow window;
window.show();
QObject::connect(&app, &QApplication::lastWindowClosed, &app, &QApplication::quit); // 当最后一个窗口关闭时退出应用
return app.exec();
}
```
在这个示例中,我们创建了一个名为`NoActivityWindow`的窗口,在其构造函数中初始化了一个定时器,每15分钟后检查是否有鼠标点击或键盘按键事件。如果没有,就会触发`showWarning`槽函数弹出警告,并关闭窗口。
注意:这个程序会在主线程中运行,如果你的应用需要处理更多复杂的事情,可能需要考虑使用线程来避免阻塞界面更新。
阅读全文