zoukankan      html  css  js  c++  java
  • Qt鼠标事件

    1、鼠标事件有哪些?默认如何触发?
    查文档;查文档,注意mousemoveevent默认是鼠标按下移动触发,若要鼠标移动直接触发,则需要setMouseTraching(true)
    2、默认消息响应是什么?如何自定义响应?
    查文档;继承重载
    3、多个接收者,鼠标事件默认接收者是谁?如何自定义接收者?
    默认会被顶层窗口消费,父窗口要接收,需要在子窗口消息响应函数中调用event->ignore()
    4、父窗口没有对消息作出响应,有哪些可能的原因?
    a.子窗口没有event->ignore
    b.子窗口设置了Qt::WA_NoMousePropagation属性
    5、Disable状态对鼠标事件的影响(子窗口不设ignore)?
    父窗口setMouseTracking(true),子窗口setDisabled(true),此时,
    a.鼠标移动到子窗口,父窗口不响应move事件;单击拖动时,父窗口响应move事件
    b.子窗口追加setMouseTracking(true),鼠标移动到子窗口,父窗口响应move事件;单击拖动时,父窗口也响应move事件
    6、如何确定是哪个鼠标键被按下?
    调用event->button()或event->buttons()
    7、如何确定鼠标坐标位置(相对于事件接收窗口和相对于桌面)?
    a.函数pos()、x()和y()给出了相对于接收鼠标事件的widget的光标位置。
    b.如果由于鼠标事件而移动widget,则使用globalPos()返回的全局位置以避免抖动。
    globalPos返回鼠标在事件发生时的全局位置。这在X11这样的异步窗口系统上很重要。每当由于鼠标事件而移动widget时,globalPos()可能与当前指针位置QCursor::pos()和QWidget::mapToGlobal(pos())有很大的不同。(遇到再补充)

  • 相关阅读:
    Equal Cut
    【线段树】Interval GCD
    zookeeper错误
    HBase之过滤器
    Hbase之缓存扫描加快读取速度
    Hbase之遍历超时处理
    Hbase之遍历获取数据
    Hbase之使用回调函数进行批处理操作
    Hbase之进行批处理操作
    Hbase之原子性更新数据
  • 原文地址:https://www.cnblogs.com/SwiftChocolate/p/14269641.html
Copyright © 2011-2022 走看看