跳至主要內容

Kry Oxygen...大约 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();

事件机制

过程:事件派发->事件过滤->事件分发->事件处理

  • 函数调用过程:

    1. 事件产生后,QApplication对象调用notify()函数将事件发送到指定窗口:

      virtual bool QApplication::notify(QObject *receiver,QEvent *e) override;
      
    2. 首先判断该目标对象是否添加了事件过滤器,若有多个事件过滤器,则先发送给最后添加的watched对象.

    3. 事件只有QObject对象及其子类才可以处理,也可以通过eventFilter来进行事件过滤,默认不对任何事件进行过滤:

      virtual bool QObject::eventFilter(QObject *watched,QEvent *event);
      // 当该函数返回true时,表示该事件处理完毕,无需发送到目标对象;当返回值为false时,需要发送到目标对象进行处理。
      
    4. 当事件发送到指定对象后,由该对象的event函数进行分类(QObject是所有用户对象的基类):

      protected:
      	virtual  bool QWidget::event(QEvent *e) override;
      // 如QpushButton等部件都是QWidget的派生类
      
  • 事件的处理:

    1. 重写notify处理函数:

      class MyApplication:public QApplication
      {
      public:
          MyApplication(int argc,char *argv[]):QApplication(argc,argv);
          virtual bool notify(QObject *reciver,QEvent *event);
      };
      
    2. 添加事件过滤器

      ui->textEdit->installEventFilter(this);
      
    3. 重写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