6Qt应用程序开发5-dq.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6Qt应用程序开发5-dq

Neusoft Institute of Information Apr 2008 第6章 Qt应用程序开发 6.1 Qt4程序设计基础 6.2 Qt Designer应用 6.3 QMainWindow、QDialog、Layout 6.4 Qt4数据库应用 6.5 Qt4多线程应用 6.6 Qt4定时器 6.7 Qt4事件处理 6.8 Qt4网络编程 6.9 QSS样式设计 6.10 QGraphics View应用 6.11 自定义控件 6.5 Qt4 多线程应用 Qt4中线程描述 创建线程 主次线程间通信 Qt4中线程描述 #includeQThread 在一个程序中,线程表示单独的调度和执行单位。 在一个程序中,各线程共享该程序的资源。 线程和进程的含义不同。在一个Qt程序中进程的入口点是main(),而Qthread类则是从run()开始执行,为了能让线程运行必须使用run()方法。 默认情况下,run()开始执行,通过调用exec()方法进入事件循环。 如果创建自己的线程类,需要重载run()方法。 Qt4中线程类的描述-例子 class MyThread : public QThread { public: void run(); }; void MyThread::run() { QTcpSocket socket; // connect QTcpSockets signals somewhere meaningful ... socket.connectToHost(hostName, portNumber); exec(); } 上例将建立一个QTcpSocket线程,然后执行线程事件的循环,使用start()方法开始执行,并在执行结束时使用run()方法来返回。 Qt4中线程类的描述 当执行完函数返回main()函数的时候,QThread将发送信号started()、finished()、terminated()来告诉线程的状态;或者可使用isRunning()和isFinished()返回线程的状态,使用wait()方法来等待一个线程完成执行。 一个线程得到系统中程序设置默认大小的堆,程序员也可以使用setStackSize()函数来设置堆的大小。 每一个线程都有自己的事件循环,当使用exec()函数的时候就开始了事件循环的过程,同时使用quit()或者exit()来结束,用事件循环的机制是为了让线程与线程之间进行通信。 需要结束一个运行的线程时,可以使用terminate()来完成。 currentThreadId()返回线程的ID,currentThread()返回一个QThread指针。 QThread也提供了依赖平台的休眠函数,sleep()以秒为单位,msleep()以毫秒为单位,usleep()以微秒为单位。 6.5 Qt4 多线程应用 Qt4中线程描述 创建线程 主次线程间通信 子类化QThread 1.Qt中使用线程十分简单,只需要继承QThread类并重新实现其run()函数。如: class: MyThread : public QThread { Q_OBJECT projected: void run(); }; Void MyThread::run() { … } 创建线程 创建线程:子类化QThread 2.只需在run()函数中填写所需的功能代码,然后创建一个MyThread实例,并以QThread::start()函数启动这个实例即可。这样,run()函数中的功能代码就运行在一个独立的线程中了。 创建线程 编程实例 创建线程 创建线程 次线程:继承QThread类的子类的定义 #include QThread class Thread : public QThread { Q_OBJECT public: Thread(); void stop();//循环结束方法 protected: void run();//循环开始方法 private: volatile bool stopped;//循环条件 }; 创建线程 次线程:类的实现 Thread::Thread() { stopped = false;//初始化循环条件 } void Thread::run() { while (!stopped) { qDebug(“running”);

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档