QT事件处理及绘图
来源:互联网 发布:dota2手机直播软件 编辑:程序博客网 时间:2024/05/16 23:49
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)
{
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事件处理及绘图
- Qt控件及事件处理
- Qt 事件的处理及联系
- Qt Focus事件处理及eventFilter的用法
- Qt Focus事件处理及eventFilter的用法
- qt中绘图事件paintEvent 的用法
- Essential Qt 第十五章 绘图事件
- qt中的事件处理
- QT 事件处理
- Qt事件处理机制
- QT事件处理
- Qt事件处理机制
- Qt事件处理机制
- qt 双击事件处理
- Qt事件处理
- qt事件处理
- Qt:事件处理
- QT 事件处理
- 领导者的基础课
- paip.数据挖掘--导出词库 清理太长的iptcode
- 深夜我在CSDN
- 计算机
- [C语言控]用C语言调用DirectWrite
- QT事件处理及绘图
- zjut1005 做幻方
- 第四章作业2
- 异常处理
- ListView原理
- 适配器模式(结构型模式)
- 浅谈大数据
- 【QT技术应用】2D绘图
- Java 参数传递(到底是值传递 还是引用传递)