ImageVerifierCode 换一换
格式:DOCX , 页数:4 ,大小:29.67KB ,
资源ID:3172613      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3172613.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(QT_QApplication类简介.docx)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

QT_QApplication类简介.docx

1、 Qt QApplication 类简介一、详细描述QApplication 类管理图形用户界面应用程序 的控制流和主要设置。 可以说 QApplication 是 Qt 的整个后台管理的命脉它包含主事件循环,在其中来自窗口系统和其它资源的所有事件被处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理。它也处理绝大多数系统范围和应用程序范围的设置。对于任何一个使用 Qt 的图形用户界面应用程序,都存在一个 QApplication 对象,而不论这个应用程序在同一时间内是不是有 0、1、2 或更多个窗口。QApplication 对象是可以通过全局变量 qApp 访问。它的负责的主要范围

2、有:* 它使用用户的桌面设置,例如 palette()、font()和 doubleClickInterval()来初始化应用程序。如果用户改变全局桌面,例如通过一些控制面板,它会对这些属性保持跟踪。* 它执行事件处理,也就是说它从低下的窗口系统接收事件并且把它们分派给相关的窗口部件。通过使用 sendEvent()和 postEvent(),你可以发送你自己的事件到窗口部件。* 它 分析命令行参数并且根据它们设置内部状态。关于这点的详细情况请参考下面的构造函数文档。* 它定义了由 QStyle 对象封装的应用程序的观感。在运行状态下,可以通过 setStyle()来改变。* 它指定了应用程序

3、如何分配颜色。详细情况请参考 setColorSpec()。* 它定义了默认文本编码(请参考 setDefaultCodec())并且提供了通过 translate()用户可见的本地化字符串。* 它提供了一些像 desktop()和 clipboard()这样的魔术般的对象。* 它知道应用程序的窗口。你可以使用 widgetAt()来询问在一个确定点上存在哪个窗口部件,得到一个 topLevelWidgets()(顶级窗口部件)的列表和通过 closeAllWindows()来关闭所有窗口,等等。* 它管理应用程序的鼠标光标处理,请参考 setOverrideCursor()和 setGlob

4、alMouseTracking()。* 在 X 窗口系统上,它提供刷新和同步通讯流的函数,请参考 flushX()和 syncX()。* 它提供复杂的对话管理支持。这使得当用户注销时,它可以让应用程序很好地结束,如果无法终止,撤消关闭进程并且甚至为未来的对话保留整个应用程序的状态。详细情况请参考 isSessionRestored()、sessionId()、commitData()和 saveState()。应用程序排演实例包含了一个 QApplication 通常用法的典型完整的 main()。因为 QApplication 对象做了如此多的初始化,它必须在所有与用户界面相关的其它类被创建

5、之前被创建。因为它也处理命令行参数,在应用程序中对 argv 解释和修改之前创建它通常是一个好主意。(注意,也对于 X11,setMainWidget() 可以根据-geometry 选项来改变主窗口部件。为了保持这个功能,你必须在 setMainWidget()和它的任何重载之前设置你的默认。)二、QApplication 两类构造的讲解QApplication:QApplication ( int #elsebool useGUI = TRUE;#endifQApplication app(argc, argv, useGUI);if ( useGUI ) /开始图形用户界面版本. els

6、e /开始非图形用户界面版本.return app.exec();三、窗口管理在窗口管理方面,对于独立的 1 个进程,qApplication 提供窗口管理的成员函数有(多进程的窗口管理,这里暂不介绍):QDesktopWidget * QApplication:desktop () 静态返回桌面窗口部件(也调用根窗口) 。桌面窗口部件对于获得屏幕大小很有用。在桌面上绘制也是可能的。我们建议不要假设可以在桌面上绘制,因为它不能在所有的操作系统上工作。QDesktopWidget *d = QApplication:desktop();int w = d-width(); / 返回桌面宽度int

7、 h = d-height(); / 返回桌面高度QWidgetList * QApplication:allWidgets () 静态返回应用程序中所有窗口部件的列表。这个列表必须使用 new 来被创建并且必须被调用者删除 。如果没有窗口部件,这个列表为空(QPtrList:isEmpty())。注意一些窗口部件也许被隐藏。更新所有窗口部件的实例:QWidgetList *list = QApplication:allWidgets();QWidgetListIt it( *list ); / 遍历窗口部件QWidget * w;while ( (w=it.current() != 0 )

8、/ 对于每一个窗口部件+it;w-update();delete list; / 删除这个列表,不是这个窗口部件QWidgetList * QApplication:topLevelWidgets () 静态返回应用程序中顶级窗口部件的列表。这个列表是使用 new 创建的并且必须由调用者删除。如果没有顶级窗口部件,这个列表是空的(QPtrList:isEmpty())。注意一些顶级窗口部件也许被隐藏了,例如如果当前没有工具提示被显示的工具提示。实例:/ 显示所有隐藏的顶级窗口部件。QWidgetList *list = QApplication:topLevelWidgets();QWidge

9、tListIt it( *list ); / 遍历窗口部件QWidget * w;while ( (w=it.current() != 0 ) / 对每一个顶级窗口部件+it;if ( !w-isVisible() )w-show();delete list; / 删除这个列表,而不是窗口部件QWidget * QApplication:topLevelAt ( int x, int y ) static返回最上层 x,y 点的 widget, 可以用来定位最上层窗口QWidget * QApplication:widgetAt ( int x, int y ) static返回当前层 x,y

10、 点的 widget, 可以用来定位当前窗口,和 topLevelAt 不同的是 widgetAt 是以 global screen position 来判断的,而topLevelAt 是以显示区域为坐标区域的。void QApplication:closeAllWindows () static slot关闭所有顶级窗口。exitAct = new QAction(tr(“EexitAct-setShortcuts(QKeySequence:Quit);exitAct-setStatusTip(tr(“Exit the application“);connect(exitAct, SIGNA

11、L(triggered(), qApp, SLOT(closeAllWindows();四、关于事件循环qApplication 的事件循环,就是 MainLoop 的事件循环,当然它的原理和 QEventLoop 的原理是一样的。void QCoreApplication:processEvents ( QEventLoop:ProcessEventsFlags flags =QEventLoop:AllEvents ) staticProcesses all pending events for the calling thread according to the specified f

12、lags until there are no more events to process.You can call this function occasionally when your program is busy performing a long operation (e.g. copying a file).In event you are running a local loop which calls this function continuously, without an event loop, the DeferredDelete events will not b

13、e processed. This can affect the behaviour of widgets, e.g. QToolTip, that rely on DeferredDelete events to function properly. An alternative would be to call sendPostedEvents() from within that local loop.Calling this function processes events only for the calling thread.大体意思就是预先调用处于队列状态的事件,直到全部处理完

14、毕。这个函数大多用于系统繁忙时,导致一些事件被延后了(如绘制事件等),用此函数可保证全部事件处理完毕后在继续执行。常见于 show(),update()之后调用。Note: 这个函数线程安全五、事件的发送关于事件的发送有两种方式:1、bool QApplication:sendEvent ( QObject * receiver, QEvent * event ) 静态使用 notify()函数直接发送事件 event 给接受者 receiver。返回由事件处理器返回的值。这个事件在它被发送时,不能被删除。通常的访问方式是在栈中创建这个事件,例如:QMouseEvent me( QEvent:

15、MouseButtonPress, pos, 0, 0 );QApplication:sendEvent( mainWindow, 如果你在堆中创建这个事件,你就必须删除它。void QApplication:postEvent ( QObject * receiver, QEvent * event ) 静态把事件 event 添加为对象 receiver 的接收对象,把它添加到事件队列中并且立即返回。这个时间必须在堆中被分配,因为递送事件队列将会得到事件的所有权并且一旦它被递送就删除它。当控制返回主事件循环,存储在队列中的所有事件将被使用 notify()函数发送。基本上 Qt 大部分的地方都是用到 sendEvent, 而少部分地方会用到 postEvent, 研究线程安全的童鞋可以多看看这方面的资料

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。