一、定时器
Qt中的QTimer有两种使用方式:
方法一、
信号: void start(int msec) 成员函数,开启定时器并设置定时器的时间间隔 单位毫秒
时间到后会发出timeout信号,连接槽函数即可
方法二、
事件:继承QTimer类,对该类进行扩展,并覆盖void timerEvent(QTimerEvent *e)事件
void start(int msec) 成员函数,开启定时器并设置定时器的时间间隔
时间到后会自动执行timerEvent函数
注意:事件函数被执行就不会再产生timeout信号
二、线程
Qt中的线程类不能直接使用,必须继承QThread并实现run函数
新的线程类对象调用start成员函数时会自动执行run函数
1、线程的终止
线程对象调用 void terminate( )成员函数会终止线程,但并不会立即终止,这取决于线程的调度策略
terminate类似于线程的取消操作,而线程也可以设置是否响应取消操作,void setTerminationEnabled(bool enabled=true)
线程真正终止时会发射void terminated() 信号
也可以使用wait函数等待线程的终止,还可以回收线程的资源
类似POSIX线程里的pthread_join函数
2、线程ID
static Qt::HANDLE currentThreadId()
获取当前线程的id
static QThread* currentThread()
获取当前线程的句柄
三、鼠标与键盘事件
控件其实一直都在监控鼠标与键盘,当鼠标与键盘发生操作时会调用控件中的事件函数,事件函数默认什么都不做,如果想让事件函数做一些操作需要继承控件并覆盖事件函数
void mousePressEvent(QMouseEvent *); //按下
void mouseReleaseEvent(QMouseEvent *); //释放
void mouseDoubleClickEvent(QMouseEvent *); //双击
void mouseMoveEvent(QMouseEvent *); //按住移动
void keyPressEvent(QKeyEvent *e);
成员函数 text 可以获取到按键的字符
成员函数 key 可以获取到键值 与 Qt::Keyx 进行比较
//键盘弹起事件
void keyReleaseEvent(QKeyEvent * e);