【VC++开源代码栏目提醒】:以下是网学会员为您推荐的VC++开源代码-qt培训资料 - 操作系统,希望本篇文章对您学习有所帮助。
QtSTLQT是挪威TROLLTECH公司开发的跨平台C工具在UNIX下非常出名他的宗旨是“一次编码到处编译”与JAVA的“一次编译到处运行”有着本质的区别作为跨平台开发工具他的运行速度非常的快因为他不需要虚拟机的支持开发的GUI非常漂亮有人认为比VISUAL C强的多而且简单。
优良的跨平台特性: Qt支持下列操作系统: Microsoft Windows 95/98Microsoft Windows NTLinuxSolarisSunOSHP-UXDigital UNIX OSF/1Tru64IrixFreeBSDBSD/OSSCOAIXOS390QNX 等等。
支持平台面向对象Qt 的良好封装机制使得Qt 的模块化程度非常高可重用性较好对于用户开发来说是非常方便的。
Qt 提供了一种称为signals/slots 的安全类型来替代callback这使得各个元件之间的协同工作变得十分简单。
其他特性丰富的API Qt 包括多达250 个以上的C 类还替供基于模板的collectionsserializationfileI/O devicedirectory managementdate/time 类。
甚至还包括正则表达式的处理功能。
支持2D/3D 图形渲染支持OpenGL大量的开发文档XML 支持Qt的授权是分为两条线商业版和
开源版。
如果使用商业版的Qt那么开发出的程序可以是私有的和商业的如果使用的是
开源版的Qt由于其使用的是GPLGNU通用公共许可协议不是LGPL那么可发出的程序也必须是GPL的。
QT授权Qt的历史以及与其他
开源项目的关系Qt最初由Haavard NordTrolltech的CEO和Eirik Chambe-EngTrolltech的总裁开发。
他们在挪威科技学院的
计算机科学硕士学位。
1990年Haavard 和Eirik 因为一个超声波图像方面的C数据库应用程序在一起工作这个系统要求在Unix Macintosh windows上运行他们萌发开发一个“面向对象的显示
系统”。
1991年开始设计提出了信号/槽的设想。
1993年开发出了qt的第一个图形核心。
1994年艰难的一年幸好得到家人的支持。
选择Q作为类的前缀在Emacs字体中看起来特别漂亮t代表toolkit。
同年建立公司最初为“Quasar Technologies‖后更名为“Troll Tech‖现为“Trolltech‖。
中文名为“奇趣科技”。
1995年签订了第一个合同走上了快速发展的道路。
日期win/x111996 1.01999 2.02001 3.02005 4.0现在4.4.4 Qt版本在Unix 的图形界面一向是以MIT 的X Window 系统为标准可是在商业应用上有两大流派一派是以Sun 公司领导的Openlook 阵营一派是IBM/HP 领导的OSF Open Software Foundation 的Motif双方经过多年竞争之后Motif 最终胜出成为最普遍使用的界面库后来双方又妥协出一个CDECommon Desktop Enviroment 作为一个标准的图形界面。
但是Motif/CDER 的价格非常昂贵在这同时微软的Windows 图形界面发展速度非常快而Unix 界的后起之秀Linux 也急需一个可靠并且
免费的图形界面。
KDE/qt与GNOME /gtk的战争1996 年10 月由开发图形排版工具Lyx的德国人Matthias Ettrich 发起了KDE 计划。
KDE 的全称为K Desktop Environment可以看出是针对CDE。
KDE 本身是采用GPL 宣言的但是KDE 却是使用Qt 来作为其底层库因为当时Qt 已经将其Unix 版本自由发布了但是Qt 并不遵循GPL因此KDE 被很多自由软件的作者攻击认为利用非自由软件开发违背了GPL 的精神于是GNU 的狂热信徒兵分两路一路是去制作Harmonny试图重写一套兼容于Qt 的替代品另一路是由一个26 岁的墨西哥程序员Miguel De Icaza 领导下重新开发一套叫GNOMEGNU Network Object Enviroment来替代KDE。
KDE/qt与GNOME /gtk的战争由于Linux 界的老大RedHat 不喜欢KDE/Qt 的版权因此RedHat 甚至专门派出了几个全职程序员来加入GNOME 进行开发
工作于是一场同Motif VS Openlook 相似的圣战就这么打起来了。
Trolltech 为了KDE 曾数次修改Qt 的版权从成立KDE Free Qt 基金会到采用QPL可谓是费尽心机但是GNOME 采用的GTK 一开始就是完全的GPL因此在这个方面GNOME 有一定的优势加上Qt/KDE 采用C 开发入门的门槛比较高而GTK/Gnome 采用C因此GNOME 吸引了更多的自由软件开发者但是KDE 毕竟先走了一步推出的KDE1.1.2 十分稳定而当时急忙中推出的GNOME1.0 的系统稳定性奇差有人甚至笑称GNOME1.0 还没有KDE 1.0 Alpha 稳定。
但是GNOME 后来发展比较快大有迎头赶上的势头。
当时双方的开发者在
网络上炒得天翻地覆连Linux 之父Linus 只是说了一句喜欢用KDE 都倍受指责。
KDE/qt与GNOME /gtk的战争战争到了第三个年头也就是2000年可谓是风云突变一个接一个重大的事件先后发生: 首先是一批从Apple 公司出来的工程师成立了一个叫Eazel 的公司替GNOME
设计界面然后是一批GNOME 程序员成立了一个Helix Code 公司替GNOME 提供商业支持而大家期待以久的KDE 2.0 也终于发布了这恐怕是目前最为庞大的自由软件了之一除了KDE 本身还包括Koffice 套件和集成开发环境Kdevelop 等等大批软件其主力
软件Kounqueror 也是第一个可以同微软的Internet Exploer 相抗衡的浏览器。
而Sun 公司Red Hat 公司Eazel 公司Helix Code 等一批公司成立了一个GNOME 基金会Sun 还宣布将把重量级办公软件Star office 同GNOME 集成Trolltech 公司自然不能坐以待毙于今年10 月4 日将Qt 的free edition 变为GPL 宣言彻底解决了KDE 的
版权问题又推出了嵌入式Qt 给了GNOME 阵营一个有力的回击。
KDE/qt与GNOME /gtk的战争到现在为止这场战争还在继续相信我们不能很快看到结果。
一般说来目前GNOME 吸引的公司比较多但是KDE/Qt 的开发的效率和质量比GNOME 高而且在Office/嵌入式环境中先走一步在一定时间内还将处于优势地位。
那么对于用户来说如何在Qt/GTK 中作出选择呢一般来说如果用户使用C对库的稳定性健壮性要求比较高并且希望跨平台开发的话那么使用Qt 是较好的选择但是值得注意的是虽然Qt 的Free Edition 采用了GPL 宣言但是如果你开发Windows 上的Qt 软件或者是Unix 上的商业软件还是需要向Trolltech 公司支付版权费用的。
KDE/qt与GNOME /gtk的战争Qt应用软件的整体结构基本上Qt 同X Window 上的MotifOpenwinGTK 等图形界面库和Windows 平台上的MFCOWLVCLATL 是同类型的东西。
QtQObjectQBrushQPainterQEventQApplicationQLayoutQWidgetQButtonQDialogQFrameQLabelQScrollViewQTextEditQToolBarQStatusBarQt应用软件的整体结构Qt常用开发工具Qt开发的主要类介绍信号与槽机制窗口布局QGraphview二维图层管理绘图OPenGL三维显示Qt Designer设计界面VS2005 Windows环境下编辑调试编译Gcc Linux环境下Qt常用开发工具Qt
常用开发工具一、Qt DesignerQt Designer是一个GUI工具它可以帮助我们加快写Qt
程序的速度。
利用Qt Designer我们可以用一种所见既所得的方式来生成Qt程序的GUI界面
代码。
QtQt二、VS2005Windows系统下一款基于C的强大的可视化开发工具。
Qt1、Qt与
VC2005的联合开发Qt2、由Qt工程生成Vs工程打开cmd切换到Qt工程目录下输入命令qmake –t vcapp。
然后就可以像开发一般的
VC程序一样在
VC环境下进行开发了。
需要注意的是如果修改了Qt工程则必须用qmake命令重新生成相应的
VC工程。
Qt三、GccLinux下一款常用的C编译器。
一般情况下我们都先在Windows下进行编码、调试成功之后再移植到Linux下用Gcc进行调试、编译。
Qt开发的主要类介绍QtQObjectQBrushQPainterQEventQApplicationQLayoutQWidgetQButtonQDialogQFrameQLabelQScrollViewQTextEditQToolBarQStatusBarQt程序基本结构include include int mainint argc char argvQApplication appargc argvQPushButton button new QPushButtonQuit 0QObject::connectbutton SIGNALclickedapp SLOTquitapp.setMainWidgetbuttonbutton-showreturn app.execQPainter在窗口上绘图的接口Qt类一方面是Qt所有其他类的基类另一方面在内部定义的其他类共用的常量QBrushQPen绘图的辅助类分别定义绘图的填充方式以及线条绘制方式QPixmap基于象素、与显示无关的绘图设备可以和QImage、QBitmap配合实现图片的生成等QEvent所有其他事件类的基类。
其子类包含鼠标事件QMouseEvent、键盘事件QKeyEvent、计时器时间QTimerEvent等等QCursor定义鼠标显示的外观QObject该类从Qt类继承同时作为大量类的基类。
Qt中的信号和槽机制是以该类为基础的所有需要用到信号和槽的类都需要从该类继承并且遵循一定的规则。
另外时间、计时器和国际化等功能都是以该类为基础的QApplication该类从QObject类继承管理GUI程序的基本设置以及交互。
通过该类可以控制窗口的显示风格以及设置语言翻译等等QLayout窗口布局的基类其各种子类提供了网格、横向、纵向等各种具体的布局
方案。
该类系列可以根据窗口的大小自动设置各控件在窗口中的大小和布局极大的简化界面
代码的编写。
QWidget所有窗口类的基类。
提供了所有窗口共用的诸多接口函数类似于MFC中的CWnd类QGLWidget在该窗口上渲染OpenGL图像。
提供了OpenGL的基本配置以及OpenGL程序的基本框架用户只需要在适当的位置编写渲染
代码即可显示OpenGL图像QGraphView用于显示Qgraphsene画布的窗口类。
画布是Qt提供的、基于图元的绘图接口是一种高层次的绘图手段QPopupMenu弹出菜单类。
一个该类的对象对应一个弹出菜单。
可以通过该类编写以及显示弹出菜单QPushButton QDialog QComboBox QScrollBar QStatusBar提供了各种窗口控件按钮、对话框等的接口概述所见即所得方式开发窗口部件
代码实现方式开发窗口部件一、概述打开Qt Designer可以看到左边有一个ToolBox这里面有大多数的窗口部件。
这些窗口部件被分为许多类型放在不同的组里面这些组由ToolBox中不同的标签分开。
利用ToolBox我们可以以所见即所得的方式便捷的开发出用户需要的UI界面。
其他一些不能由所见即所得方式开发的窗口部件如FileDialog等需要
代码实现。
二、所见即所得方式开发窗口部件1、ListBox在ToolBox中选中Views标签可以看到一个ListBox按钮。
点下ListBox按钮然后在中间工作区中的UI界面中选择放置的位置并调整大小。
这样就可以生成一个ListBox了。
2、ListView生成方法同ListBox同样是在Views标签中。
3、IconView同上4、其他包括PushButton、RadioButton、CheckButton、TextEdit、LineEdit、TextLabel等等。
其生成方法同上。
三、
代码实现方式开发窗口部件1、文件对话框最简单的方法是使用QFileDialog类的静态函数来创建一个文件对话框。
如果想要创建一个打开文件对话框则调用QFileDialog::getOpenFileName函数如果想要创建一个保存文件对话框则需要调用QFileDialog::getSaveFileName函数。
函数具体参数请查阅帮助
文档。
打开文件对话框QString fileName QFileDialog::getOpenFileName QString::null Model.mdlAll. this DlgOpenFile tr 打开文件 保存文件对话框QString fileName suffixfileNameQFileDialog::getSaveFileName QDir::currentDirPath Model.mdlAll. this DlgSaveFile tr 保存文件 suffix 2、颜色对话框想要生成一个颜色对话框可以使用QColorDialog类的静态函数getColor。
QColor color QColorDialog::getColor QColor steelblue this DlgSetSurfaceColor 3、消息框根据不同的需求使用QMessageBox类的静态函数information、warning等可以生成不同类型的消息框。
QMessageBox::information this ―提示” ―操作成功”QMessageBox::warning this ―警告” ―除数不能为0”4、其他其他如打印设置对话框、字体设置对话框、进度条框等都是属于这一类窗口部件。
这类窗口部件在Qt里面都有一个类与其对应如QFileDialog对应文件对话框。
我们只需要参照帮助
文档正确的使用这些类就可以创建出我们需要的窗口部件了。
信号signal和槽slot类似于windows中的消息和消息响应都是通过C类成员函数实现的信号和槽是通过连接实现相互关联的包含信号或槽的类必须从QObject继承信号与槽机制信号signal和槽slot——声明class Employee : public QObjectQ_OBJECTpublic:Employeeint salary constpublic slots:void setSalaryint newSalarysignals:void salaryChangedint newSalaryprivate:int mySalaryemitsalaryChanged50信号与槽机制信号signal和槽slot——连接connectsender SIGNALsignalreceiver SLOTslot一个信号可以连接多个槽这些槽被调用的顺序是随机的connectslider SIGNALvalueChangedintspinBox SLOTsetValueintconnectslider SIGNALvalueChangedintthis SLOTupdateStatusBarIndicatorint信号与槽机制信号signal和槽slot——连接一个槽可以连接多个信号每个信号都可以触发该槽connectlcd SIGNALoverflowthis SLOThandleMathErrorconnectcalculator SIGNALdivisionByZerothis SLOThandleMathError信号与槽机制信号signal和槽slot——连接信号之间可以相互连接相互连接的信号会相互触发槽和槽之间不能相互连接connectlineEditSIGNALtextChangedconst QString thisSIGNALupdateRecordconst QString 信号与槽机制信号signal和槽slot——连接信号和信号、信号和槽之间在运行时连接而且可以在运行时取消连接Qt会在适当的时候自动取消连接所以一般没有必要手动取消连接connectlcd SIGNALoverflowthis SLOThandleMathErrordisconnectlcd SIGNALoverflowthis SLOThandleMathError信号与槽机制