事件的运行机制
a.exec();//相当于回调函数 会一直检测当前窗口下有没有事件产生,有事件产生时,会发生一系列动作 事件产发------事件过滤------事件分发----事件处理 因此调用函数的事情不需要我们操心
鼠标按下去
- Qt中的事件
- 鼠标事件
- 鼠标进入事件 enterEvent
- 鼠标离开事件 leaveEvent
- 鼠标按下 mousePressEvent ( QMouseEvent ev)
- 鼠标释放 mouseReleaseEvent
- 鼠标移动 mouseMoveEvent
- ev->x() x坐标 ev->y() y坐标
- ev->button() 可以判断所有按键 Qt::LeftButton Qt::RightButton
- ev->buttons()判断组合按键 判断move时候的左右键 结合 & 操作符
- 格式化字符串 QString( “ %1 %2 ” ).arg( 111 ).arg(222)
- 设置鼠标追踪 setMouseTracking(true);
virtual void mousePressEvent(QMouseEvent *event);子类重写父类虚函数
鼠标双击放大和缩小
定时器
- 定时器1
- 利用事件 void timerEvent ( QTimerEvent * ev)
- 启动定时器 startTimer( 1000) 毫秒单位
- timerEvent 的返回值是定时器的唯一标示 可以和ev->timerId 做比较
- 定时器2
- 利用定时器类 QTimer
- 创建定时器对象 QTimer * timer = new QTimer(this)
- 启动定时器 timer->start(毫秒)
- 每隔一定毫秒,发送信号 timeout ,进行监听
- 暂停 timer->stop
- event事件
- 用途:用于事件的分发
- 也可以做拦截操作,不建议
- bool event( QEvent * e);
- 返回值 如果是true 代表用户处理这个事件,不向下分发了
- e->type() == 鼠标按下 …