QT界面开发资料下载.pdf
- 文档编号:5983471
- 上传时间:2023-05-05
- 格式:PDF
- 页数:41
- 大小:1.29MB
QT界面开发资料下载.pdf
《QT界面开发资料下载.pdf》由会员分享,可在线阅读,更多相关《QT界面开发资料下载.pdf(41页珍藏版)》请在冰点文库上搜索。
拥有8个客户,每一个都在不同的国家,他们购买了18个商业许可。
Qt1.2在1997年4月发布。
MatthiasEttrich利用Qt构建KDE的决定帮助Qt成为LinuxC+GUI开发的实际标准,1997年9月Qt1.3发布。
1998年9月,Qt1的最后一个主要发行版1.40发布。
Qt2.0于1999年7月发布。
Qt2有了一个新的开源许可协议,发布许可协议(QPL),遵守开源的定义。
1999年8月,Qt赢得了LinuxWorld的“最佳开发库/工具”大奖。
2000年奇趣科技发布了Qtopia核心(后来成为Qt/Embedded)。
它被设计用来运行在嵌入式Linux设备上并提供了自己的窗口系统作为X11的一个轻量级代替。
现在Qt/X11和Qtopia核心都可以通过GNU通用许可(GPL)获取。
到2000年年底,奇趣科技成立了TrolltechInc.(USA)并且发布了Qtopia的第一个版本,一个移动电话和PDAs应用程序平台。
Qtopia赢得了2001和2002年LinuxWorld的“最佳嵌入式Linux解决方案”大奖,1QtopiaPhone也在2004年赢得了相同的荣誉。
2001年Qt3.0发布。
Qt现在可以在Windows,MacOSX,Unix和Linux(桌面和嵌入式系统)上获取。
Qt3新增了42个类,代码超过了500,000行。
Qt3是Qt2的一个大的进步,包括相当大的本地化和Unicode支持,一个全新的文本查看和编辑物件,和一个类似Perl的正则表达式类。
2002年Qt3赢得了软件开发时代的“Jolt产品大奖”。
2005年夏天,Qt4.0发布。
包括大约500个类和9000多个函数,Qt4比以前的任何版本都要大,都要优雅,并且它已经被分割成几个库,因此程序员只需要包含他们需要的Qt的一部分。
Qt4包含了一套全新的高效且易用的模版容器,高级的模型/视图函数,一个快速且有弹性的2D绘图框架,和功能强大的Unicode文本查看/编辑类,还有一些未提到的针对所有类的许多得较小的增强,这较以前的版本有了巨大的进步。
Qt4是第一个在所有支持平台上都可以通过商业和开源开发许可获得的Qt版本。
从奇趣诞生的第一天,Qt的流行就从未减弱过,即使今天也仍在继续。
这一成功不但反映了Qt良好的品质,也反映了Qt的使用乐趣。
在最近的十年中Qt从默默无闻成长为一个全世界成千上万客户和开源开发者每天都要使用的产品。
1.2Qt产品概述产品概述Qt是一个全面的开发框架。
它包含一个广泛的队列,该队列为功能、性能和工具队列,用以确保针对多客户端和服务器端的高性能、跨平台开发。
针对范围广泛的各行各业,包括Google、AdobeLucasfilm和Skype,通过在Qt一个平台上的软件投资而涵盖其它众多平台,Qt可以缩短投入市场的时间并且提高生产效率。
图1.1Qt框架结构图?
Qt类库模块是一个拥有超过400个类,同时不断扩展的类库。
它封装了用于端到端应用程序开发所需要的所有基础结构。
2?
Qt设计者(Designer)是一个功能强大的GUI布局与窗体构造器,能够在所有支持的平台上,以本地化的视图外观与认知,快速开发高性能的用户界面。
?
Qt语言家(Linguist)是一套用来消除国际化工作流程中所带来障碍的工具。
Qt助手(Assisstant)一个完全可自定义,重新分配的帮助文件或文档浏览器,它可与基于Qt的应用程序运行。
Java程序员可获得的QtJambi作为一个支持Java的跨平台多用户端应用开发框架,Qt现已提供给Java程序员。
Qt拥有一系列窗体(在Windows术语中称为“控件”),这些窗体可提供标准的GUI功能。
Qt引入了一种名为“信号和槽”的新型替代技术,供对象之间通信使用,它取代了在过时的框架中使用的老旧的、缺乏安全性的传统回调技术。
另外,Qt还提供了一种传统事件模型,用来处理鼠标单击、按键以及其他用户输入操作。
Qt的跨平台GUI应用程序可以支持现代应用程序所需的所有用户界面功能,例如:
菜单、上下文菜单、拖放以及可停靠工具栏。
使用Qt提供的桌面集成功能,通过利用每个平台提供的服务,可以将应用程序扩展至所在的桌面环境中。
Qt还提供了一款专门用于用户界面图形设计的工具QtDesigner。
QtDesigner除了提供绝对定位功能以外,还支持强大的布局功能。
使用QtDesigner,既可专门设计GUI,又可以利用它提供的与流行的集成开发环境集成的功能,用其开发整个应用程序。
Qt对2D和3D图形有着卓越的支持。
Qt实际上是针对平台独立的OpenGL编程而开发的标准GUI框架。
Qt4的绘图系统为所有支持的平台提供了高质量的渲染功能。
使用Qt4的高级画布框架,开发人员可以创建各种交互式图形应用程序,从而充分利用Qt的先进绘图功能。
Qt可以使用标准数据库创建与平台无关的数据库应用程序。
针对Oracle、MicrosoftSQLServer、SybaseAdaptiveServer、IBMDB2、PostgreSQL.、MySQL、BorlandInterbase、SQLite和ODBC兼容的数据库,Qt提供了本地驱动。
另外,Qt还提供了专用于数据库的控件,使任何内建或自定义控件均可感知数据。
使用Qt的样式支持和主题支持功能,Qt编程可获得所有支持的平台的本地化观感。
从单一源码树只需采用重新编译方式即可为Windows98至WindowsXP和WindowsVistaTM、MacOSX、Linux、Solaris、HP-UX以及其他使用X11的Unix版本生成应用程序。
另外,Qt应用程序经过编译也能在Qtopia中运行。
使用Qt的qmake构建工具,可为目标平台生成相应的makefile或.dsp文件。
由于Qt的架构充分利用了底层平台的优点,许多用户在Windows,MacOSX和Unix平台上做单一平台开发时也使用Qt,因为他们更愿意使用Qt的方法。
Qt包含了对具体平台的特有功能的支持,例如:
Windows中的ActiveX以及Unix中的Motif。
Qt全面使用UnicodeTM,并且对国际化支持十分成熟。
Qt还为翻译人员提供了QtLinguist(语言家)以及其他工具。
应用程序可以轻松地混合使用阿拉伯语、汉语、英语、以色列语、日语、俄罗斯语以及Unicode支持的其他语言。
Qt提供了一系列与特定域相关的类。
例如,Qt的XML模块提供了SAX和DOM类,可以读取并操作以XML格式存储的数据;
使用Qt的STL兼容集合类,可以将对象存储在内存中;
使用与Java和C+标准模板库(STL)中相同样式的迭代器来操作对象;
使用Qt的输入/输出和网络连接类,可以使用标准协议处理本地文件和远程文件。
3插件和动态库可以进一步扩展Qt应用程序的功能。
插件提供了附加编解码器、数据库驱动、图像格式、样式和控件。
QtScript模块通过提供QtScript以支持应用程序的脚本化,QtScript是基于ECMA脚本的类似于JavaScript的语言。
此技术允许开发者向用户提供对应用程序的一部分的有限访问,以用于脚本化用途。
Qt是一种成熟的C+框架,在全球各地广泛使用。
Qt除了具有众多商业用途以外,其开源版本还为KDE(即:
Linux桌面环境)奠定了基础。
Qt跨平台的构建系统、可视化窗体设计以及一流的API,使应用程序开发成为一种乐趣。
1.3WindowsXP下安装下安装Qt1)下载安装文件首先去官方网站下载QtOpenSource(qt-win-opensource-4.4.0-mingw.exe),现在的最新版本是4.4,下载连接:
http:
/QtOpenSource版本只支持MinGW编译器,所以在安装QT之前最好先安装MinGW。
不事先安装也可以,QT安装时会让你指定MinGW的安装位置,如果未安装,则QT的安装程序会引导你进行MinGW的网络安装。
不过,还是建议不要使用这种方式,因为网络安装MinGW的速度比较慢,不支持断点续传。
下载MinGW的安装程序,使用官方网站http:
/www.mingw.org/提供的安装文件MinGW-5.1.3.exe或更高版本。
2)安装MinGW图1.2安装MinGW4图1.3选择安装包图1.4选择需要安装的编译器5图1.5选择安装路径图1.6安装完成3)安装Qt4.46图1.7安装Qt图1.8选择组件7图1.9选择安装路径图1.10选择已安装MinGW的路径8图1.11Qt4.4安装完成4)编译QT的Debug库到这里,安装工作还没有完全搞定,一般都会存在两个问题:
1、把代码拿到QT安装目录之外编译,总报错,错误信息是“QtValidLicenseForGuiModuledoesnotnameatype”。
如果把代码放到QT安装目录内,则编译正常。
2、无法用Debug方式编译代码,原因是安装文件里面没带QT的Debug库。
不能编译Debug程序会给以后的调试工作带来许多不便。
以上的两个问题,解决的方法是运行开始程序QtbyTrolltechv4.0.1(OpenSource)Qt4.0.1(BuildDebugLibraries),Qt4.0.1(BuildDebugLibraries),运行QT安装目录下的“binqtvars.batcompile_debug”。
该命令有两个作用,一是重新编译生成qmake程序,二是编译生成了QT的Debug库。
此时,你可以去查看一下QT安装目录下的lib目录,.a文件会多了一些以字母d结尾的库文件,这些就是QT的Debug库。
5)Helloworld程序编译一个最简单的Helloworld程序,验证QT和MinGW安装无误。
QT安装目录里已经有Helloworld程序的源码,在QT安装目录的examplestutorialstutorialt1中,以命令行方式进入该目录,分别运行“qmake”命令和“make”命令,即可在release目录中生成Helloworld的可执行程序,若运行“makedebug”命令,则会在debug目录中以Debug编译方式生成Helloworld的可执行程序。
9图1.12Helloworld程序1.4Qt开发社区开发社区全球各大公司以及独立开发人员每天都在加入Qt的开发社区。
他们已经认识到了Qt的架构本身便可加快应用程序开发进度。
这些开发人员,无论是想开发单平台软件、还是想开发跨平台软件,都可从Qt统一而直接的API、强大的构建系统以及各种支持工具(例如QtDesigner)中受益无穷。
Qt具有一个极具活力并十分有益的用户社区,用户可以通过以下方式进行沟通:
qt-interest邮件列表、QtCentre网站(网址为:
www.qtcentre.org)以及其他社区网站和博客。
另外,许多Qt开发人员也是KDE社区的活跃成员。
如今,Qt的用户社区还提供了越来越多的第三方商业软件和开源软件;
有关最新信息,请访问。
Qt的一系列文档可在线访问,网址为:
。
另外,有关Qt编程的详细介绍,市场上还有一系列英语、法语、德语、俄语、日语以及中文版本书籍。
Qt的官方书籍是C+GUIProgrammingwithQt4(ISBN0-13-187249-4)。
除了为C+开发人员提供综合框架以外,Qt还可以使用其他语言编程。
Qt本身包含了QtScript模块,这是一种类似JavaScript的技术,使用这一技术,开发人员可以用编写脚本的方法让用户访问应用程序的某些特定区域。
奇趣科技公司还提供了QtJambi这一技术,使用这种技术,Java开发人员可以基于Java编程语言来使用Qt。
另外,奇趣科技公司及第三方公司针对JavaScript、Python、Perl和Ruby提供了语言绑定;
其中许多解决方案都是由开源开发团队提供并加以维护的。
1.5窗体窗体Qt提供了一系列标准窗体,使用这些部件,可以为应用程序创建图形用户界面。
Qt的窗体灵活易用,可以进一步派生子类,以满足特殊需求。
窗体是指组合在一起创建用户界面的可视元素。
按钮、菜单、滚动条、消息框以及应用程序窗口都是窗体的例子。
Qt的窗体并没有在“控件”或“容器”之间加以截然区分。
所有窗体既可以作为控件使用、又可以作为容器使用。
通过从现有Qt窗体派生子类或者从头开始新建窗体(如有必要),则可轻松创建自定义的窗体。
标准窗体是由QWidget类及其子类提供的,而自定义窗体则可通过从标准窗体派生子类并重写虚函数的方式来创建。
窗体可以包含任意数量的子窗体。
子窗体位于父窗体区域内。
不含父窗体的则称为顶层窗体(“窗口”),这类窗体通常在桌面环境的任务栏中有自己的启动入口。
Qt对窗体没有任何硬性限制。
任何一个窗体都可以成为顶层窗体;
同时任何一个窗体也可以成为其他窗体的子部件。
使用布局管理器可以自动设置子窗体在父区域内的位置,如有必要,也可以手动设置。
禁用、隐藏或删除父窗体时,也同样会递归地禁用、隐藏或删除其所有子窗体。
10标签、消息框、工具提示以及其他文本窗体并不限定于某一种色彩、字体和语言。
Qt的文本着色窗体使用HTML的子集,可以显示丰富的多语言文本,同时大多数控件可以用一种描述性语言控制风格。
1.5.1内建窗体内建窗体图1.13展示了不同用户界面组件中所选择使用的Qt窗体。
这些窗体使用QtDesigner来布局,使用Plastique样式来着色,展示了Qt4在Linux中的标准外观。
图1.13所示窗体包括标准输入控件,例如:
QLineEdit用来输入一行文本;
QCheckBox用来启用/禁用简单的独立设置;
QSpinBox和QSlider用来指定数量;
QRadioButton用来启用/禁用互斥的设置;
QComboBox表示单击时,将打开显示选择菜单。
可点击的按钮则由QPushButton提供。
另外,图1.13中还显示了容器窗体,例如QTabWidget和QGroupBox。
这些窗体是专门由QtDesigner管理的,可以帮助设计人员快速创建并维护新用户界面。
与用户界面设计人员相比,开发人员更倾向于经常使用比较复杂的窗体(例如,图1.13“CreatePoster”对话框中显示的QScrollArea),其原因是这些复杂窗体可以用来显示专业化内容或动态内容。
Qt提供的窗体远远不止此处所列出的这些。
Qt的在线WidgetGallery中还提供了许多可用的窗体以及指向其类文档的链接。
图1.13使用不同控件创建的对话框11图1.14Qt提供了一系列标准窗体也可轻松使用手动方式编写用户界面。
可以使用以下代码来创建“FindText”对话框图1.13的选项组框。
QGroupBox*optionsGroupBox=newQGroupBox(tr(Options);
QCheckBox*caseCheckBox=newQCheckBox(tr(C&
asesensitive);
QCheckBox*directCheckBox=newQCheckBox(tr(Searchfo&
rwards);
QCheckBox*wordsCheckBox=newQCheckBox(tr(Whole&
words);
QCheckBox*startCheckBox=newQCheckBox(tr(From&
startoftext);
QGridLayout*optionsLayout=newQGridLayout;
optionsLayout-addWidget(caseCheckBox,0,0);
optionsLayout-addWidget(wordsCheckBox,0,1);
optionsLayout-addWidget(directCheckBox,1,0);
optionsLayout-addWidget(startCheckBox,1,1);
optionsGroupBox-setLayout(optionsLayout);
121.5.2定制窗体定制窗体通过从QWidget及其派生类派生子类,开发人员可以创建自己的窗体和对话框。
为了举例说明派生子类的步骤,我们从Qt4示例目录中列出了模拟时钟窗体的完整代码,该部件可以显示当前时间并自动更新。
AnalogClockAnalogClock窗体在analogclock.h文件中定义:
#includeclassAnalogClock:
publicQWidgetQ_OBJECTpublic:
AnalogClock(QWidget*parent=0);
protected:
voidpaintEvent(QPaintEvent*event);
该窗体继承通用的QWidget类,其构造函数是典型的窗体类的构造函数形式,带有一个可选的parent参数。
paintEvent()函数从QWidget继承而来,此函数在任何窗体需要更新时被调用。
AnalogClock类的实现在文件analogclock.cpp中:
#include#includeanalogclock.hAnalogClock:
AnalogClock(QWidget*parent):
QWidget(parent)QTimer*timer=newQTimer(this);
connect(timer,SIGNAL(timeout(),this,SLOT(update();
timer-start(1000);
setWindowTitle(tr(AnalogClock);
resize(200,200);
构造函数设置了一个定时器,给窗口设置了一个标题,并确保窗口默认大小正确合理。
计时器的配置设置为每1000毫秒发送一次信号。
启动计时器之前,系统使用Qt的信号和槽机制将此计时器连接至窗体的update()功能,从而确保时钟显示最新时间。
每次调用时,paintEvent()函数都会简单地将整个窗体重新绘制一次。
它使用Qt的绘13图系统绘制钟表盘和时针分针。
voidAnalogClock:
paintEvent(QPaintEvent*)staticconstQPointhourHand3=QPoint(7,8),QPoint(-7,8),QPoint(0,-40);
staticconstQPointminuteHand3=QPoint(7,8),QPoint(-7,8),QPoint(0,-70);
QColorhourColor(127,0,127);
QColorminuteColor(0,127,127);
intside=qMin(width(),height();
QTimetime=QTime:
currentTime();
该函数首先以窗体的最短边作为时钟尺寸,设置简单主体信息及色彩信息。
然后在窗体的中央绘制钟表盘,并使用反锯齿(如果可用)在正确位置上绘制时针和分针。
QPainterpainter(this);
painter.setRenderHint(QPainter:
Antialiasing);
painter.translate(width()/2,height()/2);
painter.scale(side/200.0,side/200.0);
painter.setPen(Qt:
NoPen);
painter.setBrush(hourColor);
painter.save();
painter.rotate(30.0*(time.hour()+time.minute()/60.0);
painter.drawConvexPolygon(hourHand,3);
painter.restore();
14painter.setPen(hourColor);
for(inti=0;
i12;
+i)painter.drawLine(88,0,96,0);
painter.rotate(30.0);
painter.setBrush(minuteColor);
painter.rotate(6.0*(time.minute()+time.second()/60.0);
painter.drawConvexPolygon(minuteHand,3);
painter.setPen(minu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- QT 界面 开发
![提示](https://static.bingdoc.com/images/bang_tan.gif)