QT 事件处理 KeyPressEvent 和 定时器时间 Timer
2013-08-16 10:14
816 查看
1. 按键事件响应, 两种方法,一种直接处理Event,过滤出KeyPress,另一种直接处理KeyPressEvent。
2. 定时器使用的几种方法
3. 创建事件过滤器
a. 通过目标对象调用installEventFilter方法来注册监视对象。
b. 在监视对象的eventFilter()函数中处理目标对象的事件。
bool Dialog::event(QEvent *e) { if( e->type() == QEvent::KeyPress ) { QKeyEvent *keyEvent = static_cast<QKeyEvent *>(e); if( keyEvent->key() == Qt::Key_0 ) printf("press 0 key \n"); } return QWidget::event(e); } void Dialog::keyPressEvent(QKeyEvent *event) { switch ( event->key() ) { case Qt::Key_0 : printf("press 0 key \n"); } }
2. 定时器使用的几种方法
Timer_test::Timer_test(QWidget *parent) : QWidget(parent) { QTimer::singleShot(1000, this, SLOT(timeout1())); //方法一:单次触发 QTimer *timer = new QTimer(this); //方法二:循环触发,信号槽机制 connect(timer, SIGNAL(timeout()), this, SLOT(timeout1()) ); timer->start(1000); timerID = startTimer(300); //方法三:复写timerEvent方法,需检验定时器ID } void Timer_test::timeout1() //头文件中定义为槽函数 { printf("Timeout1\n"); } void Timer_test::timerEvent(QTimerEvent *event) { if( event->timerId() == timerID ) { printf("Timeout2\n"); } else { QWidget::timerEvent(event); } }
3. 创建事件过滤器
a. 通过目标对象调用installEventFilter方法来注册监视对象。
b. 在监视对象的eventFilter()函数中处理目标对象的事件。
相关文章推荐
- QT 事件处理 KeyPressEvent 和 定时器时间 Timer
- QT窗口拖拽功能简单应用(处理dragEnterEvent和dropEvent事件,不同的事件有不同的信息,比如mimeData)
- Qt的事件处理和定时器解析
- qt学习之键盘事件( keyPressEvent)
- QT事件处理,鼠标事件,按键键盘事件,定时器,进度条。
- Qt的事件处理和定时器解析
- Libevent 编程- 定时器事件(timer event)
- QT——设置窗口的固定大小、QProcess、定时器事件、QString::arg、系统时间、QPixmap 和 QImage 区别
- Android开发:在onTouchEvent中处理任意时间的长按事件
- Android开发:在onTouchEvent中处理任意时间的长按事件
- 第七章 Qt事件(event)处理
- 在onTouchEvent中处理任意时间的长按事件
- python多线程threading事件对象event实现线程阻塞及timer时间对象
- Qt 中响应回车事件 keyPressEvent
- 无边框窗口、控件的事件处理之nativeEvent(Qt 5.5.0)
- Android开发:在onTouchEvent中处理任意时间的长按事件
- Qt的事件处理和定时器解析(实例解析)
- Android开发:在onTouchEvent中处理任意时间的长按事件
- 详解 QT Event 以及 Event Filter 事件处理
- Qt中事件处理的方法(三种处理方法,四种覆盖event函数,notify函数,event过滤,事件处理器。然后继续传递给父窗口。可观察QWidget::event的源码,它是虚拟保护函数,可改写)