QT事件处理及绘图
2014-04-17 23:57
405 查看
http://blog.chinaunix.net/uid-24951403-id-2212570.html
Qt事件处理及绘图
Qt事件处理函数的原理
Qt常用事件处理函数的使用
什么是事件:事件由窗口系统或Qt自身产生的。用以响应各种行为或情况。
事件处理过程:
1、在Qt内部,Qt通过QApplication::exec()启动的主事件循环不停的抓取事件队列的事件。
2、然后将事件转换成对应的QEvent对象
3、通过调用QObject类的event()函数将这个事件类型调用相应的事件处理器如:mounsePressEcevnt();keyPressEvent();painEvent()等;
代码实现:
voidMmouse::mousePressEvent(QMouseEvent*e)
实现方法:
通过虚函数的机制使我们可以让事件处理时调用到自定义的事件函数;
重新实现这些事件函数。
实现函数要遵守虚函数的语法规则,自定义的类中保证函数名、参数的一致性。
事件与信号的区别:
QT常用事件处理函数的使用:
void mousePressEvent(QMouseEvent *event)
void mouseReleaseEvent(QMouseEvent *event)
void mouseMoveEvent(QMouseEvent *event)
在头文件中按上面形式声明:
实现文件中:
event->x() event->y() 得到点击坐标值
event->button() 哪个键被按下。
void wheelEvent(QWheelEvent *event)
在头文件中按上面形式声明;
实现文件中:
event->orientation()
event->delta()
通过调用参数对象相关函数,获取垂直或水平滚动,以及各自滚动方向。
void keyPessEvent(QkeyEvent * event)
在头文件中按上面形式声明;
实现文件中:
switch(event->key())
case Qt::Key_Left:
.............
break;
switch(event->modifiers())
case Qt::QtAitModifier:
..............
break;
通过调用参数对象获取键值包括修饰键,然后和宏定义的键值做比较得出实际的键值。
void resieEvent(QResizeEvent *event)
当主窗口大小发生变化时被调用;
在头文件中按上面形式声明;
实现文件中:
event->size(); 变化后的窗口大小
event->oldsize(); 变化后的窗口大小
void paintEvent(QPaintEvent *event)
当窗口被绘制时被调用
在头文件中按上面形式声明;
实现文件中:
event->rect() 得到需要重新绘制的区域
通过QPainter 绘制各种图形
QPainter painter(this) 创建对象
QPainter.setPen(); 设置画笔
painter.setBrush() 设置画刷
patiner.drawPixmap(); 画图
绘制的内容以背景的形式出现在窗口中
可以通过update()产生paintEvent事件
QPainter类常用函数
drawEllipse() 画椭圆
drawRect() 画圆
drawLIne() 画线
drawPicture() 画图片
drawImage() 画图片
drawPixmap() 画图片
drawText() 绘文本
QPainter类常用函数
setBrush() 设置画刷
setPen() 设置画笔
setFont()设置字体
注意点:
QPainter 必须要放在paintEvent()里,否则会初始化失败
Qt事件处理及绘图
Qt事件处理函数的原理
Qt常用事件处理函数的使用
什么是事件:事件由窗口系统或Qt自身产生的。用以响应各种行为或情况。
事件处理过程:
1、在Qt内部,Qt通过QApplication::exec()启动的主事件循环不停的抓取事件队列的事件。
2、然后将事件转换成对应的QEvent对象
3、通过调用QObject类的event()函数将这个事件类型调用相应的事件处理器如:mounsePressEcevnt();keyPressEvent();painEvent()等;
代码实现:
voidMmouse::mousePressEvent(QMouseEvent*e)
{
QStringstr="";
qDebug()<<"inmousePressEvent";
switch(e->button())
{
caseQt::LeftButton:
str="LeftButoonPressed!";
break;
caseQt::RightButton:
str="RightButoonPressed!";
break;
caseQt::MidButton:
str="MidButoonPressed!";
break;
default:break;
//ui->label->setText(QString::number(e->x()));
}
str+="("+QString::number(e->x())+
","+QString::number(e->y())+")";
ui->label->setText(str+"("+QString::number(e->globalX())
+","+QString::number(e->globalY())+")");
//ui->label->setText(str);
}
实现方法:
通过虚函数的机制使我们可以让事件处理时调用到自定义的事件函数;
重新实现这些事件函数。
实现函数要遵守虚函数的语法规则,自定义的类中保证函数名、参数的一致性。
事件与信号的区别:
QT常用事件处理函数的使用:
void mousePressEvent(QMouseEvent *event)
void mouseReleaseEvent(QMouseEvent *event)
void mouseMoveEvent(QMouseEvent *event)
在头文件中按上面形式声明:
实现文件中:
event->x() event->y() 得到点击坐标值
event->button() 哪个键被按下。
void wheelEvent(QWheelEvent *event)
在头文件中按上面形式声明;
实现文件中:
event->orientation()
event->delta()
通过调用参数对象相关函数,获取垂直或水平滚动,以及各自滚动方向。
void keyPessEvent(QkeyEvent * event)
在头文件中按上面形式声明;
实现文件中:
switch(event->key())
case Qt::Key_Left:
.............
break;
switch(event->modifiers())
case Qt::QtAitModifier:
..............
break;
通过调用参数对象获取键值包括修饰键,然后和宏定义的键值做比较得出实际的键值。
void resieEvent(QResizeEvent *event)
当主窗口大小发生变化时被调用;
在头文件中按上面形式声明;
实现文件中:
event->size(); 变化后的窗口大小
event->oldsize(); 变化后的窗口大小
void paintEvent(QPaintEvent *event)
当窗口被绘制时被调用
在头文件中按上面形式声明;
实现文件中:
event->rect() 得到需要重新绘制的区域
通过QPainter 绘制各种图形
QPainter painter(this) 创建对象
QPainter.setPen(); 设置画笔
painter.setBrush() 设置画刷
patiner.drawPixmap(); 画图
绘制的内容以背景的形式出现在窗口中
可以通过update()产生paintEvent事件
QPainter类常用函数
drawEllipse() 画椭圆
drawRect() 画圆
drawLIne() 画线
drawPicture() 画图片
drawImage() 画图片
drawPixmap() 画图片
drawText() 绘文本
QPainter类常用函数
setBrush() 设置画刷
setPen() 设置画笔
setFont()设置字体
注意点:
QPainter 必须要放在paintEvent()里,否则会初始化失败
相关文章推荐
- QT绘图高级技术(一)GraphicsView框架事件处理
- Qt 事件处理和事件过滤器的返回值总结
- Qt 事件处理 快捷键
- 用事件队列解决GUI的操作顺序问题(Qt中处理方法)
- 9、Qt 事件处理机制
- Qt 事件处理
- Qt获得焦点和失去焦点处理事件 (Focus事件)
- Qt事件处理
- java .net MFC QT事件处理机制
- 无边框窗口、控件的事件处理之nativeEvent(Qt 5.5.0)
- Qt获得焦点和失去焦点处理事件 (Focus事件)
- Qt ------ 事件处理机制
- Qt 事件处理机制 (上篇)
- 【Java】Java绘图技术与事件处理机制
- opencv图像处理之鼠标事件(矩形roi绘图)
- Qt中使用事件过滤器来处理键盘焦点
- Qt事件处理(四)
- QT窗口拖拽功能简单应用(处理dragEnterEvent和dropEvent事件,不同的事件有不同的信息,比如mimeData)
- QT事件处理(二) 之 事件过滤器
- Qt事件触发与处理