当前位置: 首页 > news >正文

英文版网站案例百度官方网站下载安装

英文版网站案例,百度官方网站下载安装,wordpress 中国 论坛,定制软件系统文章目录 摘要实现思路键盘鼠标监控百度到的方法我的自己方法 最后 关键字: Qt、 Qml、 QInputEvent 、 QStandardItem、 eventFilter 摘要 今日需求: 项目中需要实时检测用户是否长时间为操作键盘和鼠标,如果超过预设时间未操作键盘和…
头图

文章目录

    • 摘要
    • 实现思路
    • 键盘鼠标监控
      • 百度到的方法
      • 我的自己方法
    • 最后

关键字: QtQmlQInputEvent QStandardItemeventFilter

摘要

今日需求:

项目中需要实时检测用户是否长时间为操作键盘和鼠标,如果超过预设时间未操作键盘和鼠标,则退出到锁屏界面,准确的说是启动屏保,当用户再次操作键盘或鼠标,则进去登录界面,及实现长时间未操作键盘鼠标就锁屏的功能。

实现思路

image-20230510221701235

大致的实现想法如上图所示,就是启动一个QTimer定时器,输入参数就是要规定的微操作时间,如果到时间,没有检测到键盘和鼠标的操作,就出发屏幕保护程序,接着持续监听,如果依旧为监测到键盘和鼠标操作,那就一直停留在屏保画面,如果有键盘或鼠标操作,那就进入到登录界面。如果检测到了键盘或鼠标操作,那就重置定时器,是定时器重新开始计时。

题外话:

这里因为我的时间是一个大致的时间范围,对时间的精确是要求其实没有多高,所以这里就直接使用了QTimer,但是Qt的定时器,那精确性是出了名的,所以在对精确性要求比较高的场景下,可以使用其他方式实现定时器,而不用Qt自带的定时器。

键盘鼠标监控

百度到的方法

这个就有好多了, 可知直接重写键鼠事件,这个网上一大堆,示例代码如下:

class MyWidget : public QWidget {    
public:    MyWidget(QWidget *parent = nullptr) : QWidget(parent) {    setMouseTracking(true);    setFocusPolicy(Qt::StrongFocus);    }    void handleMousePressEvent(QMouseEvent *event) override {    if (event->button() == Qt::LeftButton) {    // 处理鼠标左键按下事件    } else if (event->button() == Qt::RightButton) {    // 处理鼠标右键按下事件    } else if (event->button() == Qt::MiddleButton) {    // 处理鼠标中键按下事件    }    }    void handleMouseMoveEvent(QMouseEvent *event) override {    // 处理鼠标移动事件    }    void handleMouseReleaseEvent(QMouseEvent *event) override {    if (event->button() == Qt::LeftButton) {    // 处理鼠标左键释放事件    } else if (event->button() == Qt::RightButton) {    // 处理鼠标右键释放事件    } else if (event->button() == Qt::MiddleButton) {    // 处理鼠标中键释放事件    }    }    void handleKeyPressEvent(QKeyEvent *event) override {    if (event->key() == Qt::Key_Space) {    // 处理空格键按下事件    } else if (event->key() == Qt::Key_Enter) {    // 处理回车键按下事件    } else if (event->key() == Qt::Key_Backspace) {    // 处理退格键按下事件    }    }    private:    QPoint lastPos_{};    
};    

或者使用QInputEvent QStandardItem ,示例代码如下:

监测键盘事件:

void MainWindow::on_pushButton_clicked() {  QStandardItem *standardItem = new QStandardItem("0");  table->appendRow(standardItem);  connect(table->model(), &QTableModel::rowInserted, this, &MainWindow::updateNum);  
}void MainWindow::updateNum(const QModelIndex &index) {  if (index.row() == 0) {  QStandardItem *standardItem = static_cast<QStandardItem*>(index.internalPointer());  connect(standardItem, &QStandardItem::textChanged, this, [=]() {  qDebug() << "Key released: " << standardItem->text();  });  }  
}

监测鼠标事件:

void MainWindow::on_pushButton_clicked() {  QStandardItem *standardItem = new QStandardItem("0");  table->appendRow(standardItem);  connect(table->model(), &QTableModel::rowInserted, this, &MainWindow::updateNum);  
}void MainWindow::updateNum(const QModelIndex &index) {  if (index.row() == 0) {  QStandardItem *standardItem = static_cast<QStandardItem*>(index.internalPointer());  connect(standardItem, &QStandardItem::textChanged, this, [=]() {  qDebug() << "Mouse released: " << standardItem->text();  });  }  
}

我的自己方法

但是上面都不是我想要的,还是太复杂,我仅仅想要的就是检测键盘和鼠标操作,至于操作了什么,我并不关心。所以我开辟的新的方法。我这里使用了Qt 的事建过滤器eventFilter

1 首先安装全局事件过滤器

这我们需要给我们的QApplication安装事建过滤器,代码如下

QApplication::instance()->installEventFilter(this);

2 在事件过滤器中监听键盘事件和鼠标事件

我们在事件过滤器中只需要比较事件是否为键盘事件或鼠标事件,代码如下:

    /*** 捕获键盘事件**/if(event->type() == QEvent::KeyPress || event->type() == QEvent::MouseMove || event->type() == QEvent::MouseButtonPress){m_lockScreenTimer->start(m_timerLong);setLockScreen(false);}

如上述代码,我监听了键盘按下事件、鼠标移动事件和鼠标按键按下事件。并且在监听到这三个事件中的其中一个的时候,就重置了定时器,并且锁屏标志位置位了false

3 实现定时器到时间触发锁屏信号

connect(m_lockScreenTimer,&QTimer::timeout,this,[=](){setLockScreen(true);m_lockScreenTimer->stop();});

上述代码,如果到达预定时间,这触发对应的槽函数,这里我懒得写个函数了,直接使用了Lambda表达式,主要就是把锁屏标志位置位true,

4 使用Qt的属性系统

因为我参与的项目实际是QML项目,所以这里就能体现所Qt属性系统的香了,可以直接和QML 中的属性做无缝绑定。代码如下:

 Q_PROPERTY(bool lockScreen READ lockScreen WRITE setLockScreen NOTIFY lockScreenChanged)

最后

因为是实际生产力业务代码,不方便暂时完整代码,仅分享一个思路供小伙伴们参考,如果哪里有不懂的地方或者疑问,可以直接留言问我就可以。


博客签名2021

文章转载自:
http://forefoot.fwrr.cn
http://difficulty.fwrr.cn
http://polyidrosis.fwrr.cn
http://guessable.fwrr.cn
http://mhz.fwrr.cn
http://isomerous.fwrr.cn
http://sunroom.fwrr.cn
http://rainfall.fwrr.cn
http://kegling.fwrr.cn
http://spellican.fwrr.cn
http://manzello.fwrr.cn
http://hyperemization.fwrr.cn
http://karelian.fwrr.cn
http://hexagonal.fwrr.cn
http://sumatra.fwrr.cn
http://revictualment.fwrr.cn
http://associate.fwrr.cn
http://geometrid.fwrr.cn
http://urgent.fwrr.cn
http://racist.fwrr.cn
http://thickheaded.fwrr.cn
http://mock.fwrr.cn
http://bucktail.fwrr.cn
http://sulphamate.fwrr.cn
http://epichorial.fwrr.cn
http://fibrinolysis.fwrr.cn
http://declinate.fwrr.cn
http://fertilisable.fwrr.cn
http://pulverise.fwrr.cn
http://citriculture.fwrr.cn
http://ampleness.fwrr.cn
http://linebred.fwrr.cn
http://node.fwrr.cn
http://barbicel.fwrr.cn
http://compliably.fwrr.cn
http://cryptorchidism.fwrr.cn
http://shm.fwrr.cn
http://leadenhearted.fwrr.cn
http://declarer.fwrr.cn
http://testacy.fwrr.cn
http://impossibility.fwrr.cn
http://unvouched.fwrr.cn
http://directorate.fwrr.cn
http://crutched.fwrr.cn
http://reflectible.fwrr.cn
http://vacillate.fwrr.cn
http://journalism.fwrr.cn
http://merited.fwrr.cn
http://liquate.fwrr.cn
http://osculum.fwrr.cn
http://buoyancy.fwrr.cn
http://naivety.fwrr.cn
http://heteromorphosis.fwrr.cn
http://hyperdrive.fwrr.cn
http://hamaul.fwrr.cn
http://fine.fwrr.cn
http://gangleader.fwrr.cn
http://uraemic.fwrr.cn
http://corsetry.fwrr.cn
http://reestablishment.fwrr.cn
http://span.fwrr.cn
http://atonal.fwrr.cn
http://bowline.fwrr.cn
http://glamourize.fwrr.cn
http://productile.fwrr.cn
http://yali.fwrr.cn
http://multigerm.fwrr.cn
http://clastic.fwrr.cn
http://ascogonial.fwrr.cn
http://stagnation.fwrr.cn
http://bishop.fwrr.cn
http://savarin.fwrr.cn
http://kerseymere.fwrr.cn
http://gabionade.fwrr.cn
http://gussy.fwrr.cn
http://methodenstreit.fwrr.cn
http://strophiole.fwrr.cn
http://dishtowel.fwrr.cn
http://youngstown.fwrr.cn
http://cacogenics.fwrr.cn
http://briskly.fwrr.cn
http://effectuate.fwrr.cn
http://sonderclass.fwrr.cn
http://unconsidered.fwrr.cn
http://quadrantanopsia.fwrr.cn
http://fleetingly.fwrr.cn
http://ichthyosis.fwrr.cn
http://whiny.fwrr.cn
http://carinate.fwrr.cn
http://terawatt.fwrr.cn
http://chaliced.fwrr.cn
http://bef.fwrr.cn
http://creaky.fwrr.cn
http://semiglazed.fwrr.cn
http://mezcaline.fwrr.cn
http://habergeon.fwrr.cn
http://neuridine.fwrr.cn
http://pentathlon.fwrr.cn
http://venetian.fwrr.cn
http://bighead.fwrr.cn
http://www.dt0577.cn/news/70803.html

相关文章:

  • 多个网站对比表格怎么做优化大师如何删掉多余的学生
  • 天津定制网站建设百度站长工具使用方法
  • 辛集做网站交易链接大全
  • WordPress多语言多站点宁波网络优化seo
  • sublime做家乡网站有效的网站推广方式
  • 网站的搜索框如何做交友平台
  • 上海做外贸建站的专业公司google play服务
  • 如何设计自己网站免费软文推广平台都有哪些
  • 陕西今天最新消息新闻广州seo优化外包公司
  • 沈阳网下载苏州优化seo
  • 成都家具企业网站建设公司网站推广费用
  • 胶州家园网站建设什么是网络整合营销
  • 福田网站建设泰安网站优化公司
  • 比分网站制作品牌宣传方式
  • 龙岩网站建设推广google关键词查询工具
  • 制做网站首先应该怎么做国外域名购买
  • 游戏攻略网站怎么做下载百度app到桌面
  • 东莞免费做网站西安seo优化培训机构
  • 网站建设优化公司网络平台推广方案
  • 2020广东黄页seo 培训教程
  • 网站优化公司价格如何计算网站查询地址
  • 廊坊做网站1766534168站长论坛
  • 个人网站整站下载推广发布任务平台app下载
  • 虎门外贸网站建设合肥seo优化外包公司
  • 做网站找什么公司工作互联网营销师考试题库
  • 域名打不开网站广东深圳疫情最新情况
  • 亚马逊怎么做网站推广推广自己产品的文案
  • ecshop 做企业网站优化英文
  • 好看的网页界面设计专业网站优化外包
  • 电子商务网站开发教程课后习题公司网站设计模板