...大约 2 分钟
线程的创建
- 将执行对象放到线程中
QThread *m_pThread = new QThread;
A->moveThread(m_pThread); //将所指对象
connect(········);
m_pThread->start(); //开启线程
- 继承QThread类
//定义一个继承QThread的类,重写run方法
WorkThread :public QThread
{
·····
}
workthread=new WorkThread();
workthread->start();
事件机制
过程:事件派发->事件过滤->事件分发->事件处理
函数调用过程:
事件产生后,QApplication对象调用notify()函数将事件发送到指定窗口:
virtual bool QApplication::notify(QObject *receiver,QEvent *e) override;
首先判断该目标对象是否添加了事件过滤器,若有多个事件过滤器,则先发送给最后添加的
watched
对象.事件只有QObject对象及其子类才可以处理,也可以通过
eventFilter
来进行事件过滤,默认不对任何事件进行过滤:virtual bool QObject::eventFilter(QObject *watched,QEvent *event); // 当该函数返回true时,表示该事件处理完毕,无需发送到目标对象;当返回值为false时,需要发送到目标对象进行处理。
当事件发送到指定对象后,由该对象的
event
函数进行分类(QObject是所有用户对象的基类):protected: virtual bool QWidget::event(QEvent *e) override; // 如QpushButton等部件都是QWidget的派生类
事件的处理:
重写notify处理函数:
class MyApplication:public QApplication { public: MyApplication(int argc,char *argv[]):QApplication(argc,argv); virtual bool notify(QObject *reciver,QEvent *event); };
添加事件过滤器
ui->textEdit->installEventFilter(this);
重写event函数
QWidget中的show,close,exec,accept,reject
- show:调用setVisible(bool)函数
- close:默认调用hide函数隐藏窗口,当设置Qt::WA_DeleteOnClose属性时,会调用deletelater()函数
- exec:显示窗口,提供一个可用的返回值并进入事件循环,显示的窗口为模态窗口
- accept:关闭窗口,返回Accepted信号
- reject:关闭窗口,返回Rejected信号
Powered by Waline v2.15.6