赞
踩
目录
QT 程序是事件驱动的, 程序的每个动作都是由内部某个事件所触发。QT 事件的发生和处理 成为程序运行的主线,存在于程序整个生命周期。
常见的 QT 事件类型如下:
QT 将系统产生的消息转化为 QT 事件,QT 事件被封装为对象,所有的 QT 事件均继承抽象类 QEvent,用于描述程序内部或外部发生的动作。
Qt 提供的事件处理器函数都是回调函数,也就是说作为使用者我们只需要指定函数的处理动作,关于函数的调用是不需要操心的,当某个事件被触发,Qt 框架会调用对应的事件处理器函数。
如何查找事件处理函数?
进入帮助文档。
在Protected Function中,只要函数名后缀带有Event都是事件处理函数
- //当当鼠标左键、鼠标右键、鼠标中键被按下,该函数被自动调用
- //通过参数可以得到当前按下的是哪个鼠标键
- [virtual protected] void QWidget::mousePressEvent(QMouseEvent *event);
-
- //当鼠标左键、鼠标右键、鼠标中键被释放,该函数被自动调用,
- //通过参数可以得到当前释放的是哪个鼠标键
- [virtual protected] void QWidget::mouseReleaseEvent(QMouseEvent *event);
-
- //鼠标移动事件
- //当鼠标移动(也可以按住一个或多个鼠标键移动),该函数被自动调用
- //通过参数可以得到在移动过程中哪些鼠标键被按下了。
- [virtual protected] void QWidget::mouseMoveEvent(QMouseEvent *event);
-
- //当鼠标双击该函数被调用,通过参数可以得到哪一鼠标键进行双击
- [virtual protected] void QWidget::mouseDoubleClickEvent(QMouseEvent *event);
-
- //当鼠标进入窗口的一瞬间,触发该事件,注意:只在进入的瞬间触发一次该事件
- [virtual protected] void QWidget::enterEvent(QEvent *event);
-
- //当鼠标离开窗口的一瞬间,触发该事件,注意:只在离开的瞬间触发一次该事件
- [virtual protected] void QWidget::leaveEvent(QEvent *event);

- //当键盘上的按键被按下了,该函数被自动调用,通过参数可以得知按下的是哪个键
- [virtual protected] void QWidget::keyPressEvent(QKeyEvent *event);
-
- //当键盘上的按键被释放了,该函数被自动调用,通过参数可以得知释放的是哪个键。
- [virtual protected] void QWidget::keyReleaseEvent(QKeyEvent *event);
[virtual protected] void QWidget::paintEvent(QPaintEvent *event);
当窗口刷新时,该窗口会被自动调用。比如:
[virtual protected] void QWidget::closeEvent(QCloseEvent *event);
当窗口标题栏的关闭按钮被按下并且在窗口关闭之前该函数被调用,可以通过该函数控制窗口是否被关闭。
[virtual protected] void QWidget::resizeEvent(QResizeEvent *event);
当窗口的大小发生变化,该函数被调用。
Qt自带事件处理函数都有默认处理动作,如果我们不想使用事件处理函数函数默认动作,我们可以
自定义该事件的处理动作。
步骤:
示例:
- //重写resizeEvent和moveEvent事件
-
- void MainWindow::resizeEvent(QResizeEvent*)
- {
- geoUpdate();
- }
-
-
- void MainWindow::moveEvent(QMoveEvent*)
- {
- geoUpdate();
- }
-
- void MainWindow::geoUpdate()
- {
- //获取位置信息
- //geometry()函数是QWidet中公共成员函数
- //它获取的是窗口的左上标的位置,以及窗口的宽度,高度
- QRect rect=geometry();
- QString x=QString::number(rect.x());
- QString y=QString::number(rect.y());
-
- QString height=QString::number(rect.height());
- QString width=QString::number(rect.width());
-
- ui->coordiante_line->setText("( "+x+","+y+" )");
- ui->heigth_line->setText(height);
- ui->wid_line->setText(width);
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。