Qt常用事件以及绘图

Qt常用事件以及绘图

1.Qt事件处理函数的原理

2.Qt常用事件处理函数的使用

3.Qt绘图

1.Qt事件处理函数的原理

1.1什么是事件
事件是各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。Qt是使用一个对象来表示一个事件,继承自QEvent类。
也可以说Qt的事件就是响应我们的各种行为或者动作的情况。

1.2事件处理的过程
1.Qt先通过QApplication::exec()启动的主事件,不停的捕获事件队列中的事件
2.捕获事件后转换成对应的QEvent对象
3.调用QObject类的event()函数,将捕获的事件通过调用事件处理器进行相对应的处理。如mousePressEvent()、paintEvent()、mouseMoveEvent()等

1.3事件处理的实现方法
1.通过虚函数的机制可以使我们在事件处理时调用自定义的事件处理函数
2.重写这些事件函数
3.要遵循虚函数相应的语法规则,自定义的类中要保证函数名和参数一致

2.Qt常用事件处理函数的使用

事件
鼠标事件: QMousePressEvent QMouseReleaseEvent
QMouseMoveEvent
滑轮事件: QWheelEvent
键盘事件: QKeyPressEvent
绘图事件: QPaintEvent
调整大小事件: QResizeEvent

函数
void paintEvent(QPaintEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void wheelEvent(QWheelEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void resizeEvent(QResizeEvent *event);

使用
1.在头文件中声明(最笨的方法看见一个基类就声明一个)
2.在实现函数中要使用相关的函数,来获取相应的对象:
event->x() event->y() —得到点击的坐标值
event->button() —哪个键被按下

例如
*void wheelEvent(QWheelEvent event)
1.在头文件中声明 #include ”打出来会使得整个<>都没有,自己用起来要加上
2.在函数或者相应的实现文件中:
event->orientation() —方向
event->delta() —鼠标的滑轮方向

*void keyPressEvent(QKeyEvent event)
1.在头文件中声明 #include 2.在函数或者相应的实现文件中:
switch (event->key())
case Qt::Key_Left:

break;

switch (event->modifiers())
case Qt::AltModifier:

break;
通过调用参数对象获取键值包括修饰键,然后和宏定义的键值作比较得出实际的键值
PS: 这个事件首先传给拥有焦点的对象

3.Qt绘图

3.1 Qt绘图机制
1.Qt的绘图机制为屏幕显示和打印显示提供了统一的API接口,主要有三部分组成:
QPainter类、QPintDevice类、QPaintEngine类。
2. QPainter类提供了画图操作的各种接口,可以方便的绘制各种各样的图形(包括图片);
3. QPintDevice类提供可用于画图的空间以及画图的容器;
4. QPaintEngine类是抽象类,提供抽象接口定义,对开发者而言,我们一般很少用到。

3.2 利用QPainter绘制各种图形

  1. 在void paintEvent(QPaintEvent *event)中实现
  2. 当窗口被绘制时被调用
  3. 可以通过update()产生paintEvent()事件
  4. 绘制的内容以背景的形式出现在窗口中
  5. QPainter一般要放在paintEvent()里,否则会初始化失败

3.3利用QPainter绘制各种图形
1.在头文件中声明 #include 2.在函数或者实现文件中:
event->rect() —可得到需要重新绘制的区域
QPainter绘图:
QPainter painter(this); —创建绘图对象
painter.setPen(); —设置画笔
painter.setBrush(); —设置画刷
painter.drawXXX; —画XXX
利用QPainter绘制各种图形:
drawPoint() —画点
drawLine() —画直线
drawRect() —画矩形
drawEllipse() —画椭圆
drawPicture() —画图片
drawImage() —绘图片
drawPixmap() —绘图片
drawText() —绘文本

void QPainter::setPen() —设置画笔 Qt常用事件以及绘图_第1张图片

void Qpainter::setBrush() —设置画刷
Qt常用事件以及绘图_第2张图片

还有字体(Font)等等,起自己去看开发文档就好,里面的枚举类是我们平时可以直接设置的。当然也会有自己设置的比如鼠标的图标类型,就需要我们去加载资源了。

如果有什么不对的地方希望大家可以给我指正,我们共同进步。。。

你可能感兴趣的:(Qt基础知识,Qt基础知识)