没有合适的资源?快使用搜索试试~ 我知道了~
首页LINUX QT学习之路
是一个著名的 C++C++ 库—— 或许并不能说这只是一个 GUIGUIGUI库,因为 库,因为 Qt 十分庞大, 并不仅是 GUI 。使用 。使用 Qt ,在一定程序上你获得的是个 ,在一定程序上你获得的是个 ,在一定程序上你获得的是个 ,在一定程序上你获得的是个 ,在一定程序上你获得的是个 ,在一定程序上你获得的是个 ,在一定程序上你获得的是个 ,在一定程序上你获得的是个 “一站式 ”的服务:不再需要 的服务:不再需要 的服务:不再需要 的服务:不再需要 研究 STLSTLSTL,不再需要 C++C++ 的<string> <string><string><string><string> ,因为 Qt 有它自己的 QStringQStringQStringQStringQStringQString 等。或许这样说 很偏激,但 Qt 确实是一个 “伟大的 C++C++ 库”。
资源详情
资源评论
资源推荐

QT 学习之路
二维画图中视口坐标与窗口坐标
视口坐标系是对物理坐标系而言,也就是我们平常画图使用的坐标系(通常相对
屏幕或者父窗口部件);窗口坐标系是我们自己定义的逻辑坐标系,根据画图的方面
而自定义的。在默认情况下,视口坐标系与窗口坐标系是一致的。在 Qt 中我们画图
时坐标都是相对于窗口坐标系,而与视口坐标系无关。
比如:比如我们要一个矩形(0,0,320,200)(视口坐标)内画图,而我们可
以定义这个矩形的窗口坐标为(-50,-50,100,100);窗口坐标系统相对与视口坐标
系做了平移与缩放。在视口坐标系矩形的左上角坐标为(0,0),宽度为 320,高度为
200 的长方形;而在窗口坐标系中这个矩形的左上角坐标为(-50,-50),宽度为 100,高度
为 100 的正方形。
坐标的转换公式:(x0-m)*Rx=(X-0) (Y0-n)*Ry=Y-0
Rx 为 X 轴的缩放因子,Ry 为 Y 轴的缩放因子.
Qt 学习之路(1)
Qt是一个著名的 C++库——或许并不能说这只是一个 GUI 库,因为 Qt十分庞大,
并不仅仅是 GUI。使用 Qt,在一定程序上你获得的是一个“一站式”的服务:不再需要
研究 STL,不再需要 C++的<string>,因为 Qt 有它自己的 QString 等等。或许这样说
很偏激,但 Qt 确实是一个“伟大的 C++库”。
我们所使用的 Qt,确切地说也就是它的 GUI 编程部分。C++的 GUI 编程同 Java
不同:GUI 并不是 C++标准的一部分。所以,如果使用 Java,那么你最好的选择就是
AWT/Swing,或者也可以使 SWT/JFace,但是,C++的 GUI 编程给了你更多的选择:
wxWidget, gtk++以及 Qt。这几个库我都有接触,但是接触都不是很多,只能靠一些资
料和自己的一点粗浅的认识说一下它们之间的区别(PS: 更详尽的比较在前面的文章
中有)。
首先说 wxWidget,这是一个标准的 C++库,和 Qt 一样庞大。它的语法看上去和
MFC 类似,有大量的宏。据说,一个 MFC 程序员可以很容易的转换到 wxWidget 上
面来。wxWidget 有一个很大的优点,就是它的界面都是原生风格的。这是其他的库

所不能做到的。wxWidget 的运行效率很高,据说在 Windows 平台上比起微软自家的
MFC 也不相上下。
gtk++其实是一个 C 库,不过由于 C++和 C 之间的关系,这点并没有很大的关系。
但是,gtk++是一个使用 C 语言很优雅的实现了面向对象程序设计的范例。不过,这
也同样带来了一个问题——它的里面带有大量的类型转换的宏来模拟多态,并且它的
函数名“又臭又长(不过这点我倒是觉得无所谓,因为它的函数名虽然很长,但是同样
很清晰)”,使用下划线分割单词,看上去和 Linux 如出一辙。由于它是 C 语言实现,
因此它的运行效率当然不在话下。gtk++并不是模拟的原生界面,而有它自己的风格,
所以有时候就会和操作系统的界面显得格格不入。
再来看 Qt,和 wxWidget 一样,它也是一个标准的 C++库。但是它的语法很类似
于 Java 的 Swing,十分清晰,而且 SIGNAL/SLOT 机制使得程序看起来很明白——这
也是我首先选择 Qt 的一个很重要的方面,因为我是学 Java 出身的。不过,所谓“成也
萧何,败也萧何”,这种机制虽然很清楚,但是它所带来的后果是你需要使用 Qt 的
qmake 对程序进行预处理,才能够再使用 make 或者 nmake 进行编译。并且它的界面
也不是原生风格的,尽管 Qt 使用 style 机制十分巧妙的模拟了本地界面。另外值得一
提的是,Qt 不仅仅运行在桌面环境中,Qt 已经被 Nokia 收购,它现在已经会成为
Symbian 系列的主要界面技术——Qt 是能够运行于嵌入式平台的。
以往人们对 Qt 的授权多有诟病。因为 Qt 的商业版本价格不菲,开源版本使用的
是 GPL 协议。但是现在 Qt 的开源协议已经变成 LGPL。这意味着,你可以将 Qt 作为
一个库连接到一个闭源软件里面。可以说,现在的 Qt 协议的争议已经不存在了——
因为 wxWidgets 或者 gtk+同样使用的是类似的协议发布的。
在本系列文章中,我们将使用 Qt4 进行 C++ GUI 的开发。我是参照着《C++ GUI
Programming with Qt4》一书进行学习的。其实,我也只是初学 Qt4,在这里将这个学
习笔记记下来,希望能够方便更多的朋友学习 Qt4。我是一个 Java 程序员,感觉 Qt4
的一些命名规范以及约束同 Java 有异曲同工之妙,因而从 Java 迁移到 Qt4 似乎困难
不大。不过,这也主要是因为 Qt4 良好的设计等等。
闲话少说,还是尽快开始下面的学习吧!

Qt 学习之路(2/3):Hello, world!
任何编程技术的学习第一课基本上都会是 Hello, world!,我也不想故意打破这个
惯例——照理说,应该首先回顾一下 Qt 的历史,不过即使不说这些也并无大碍。
或许有人总想知道,Qt 这个单词是什么意思。其实,这并不是一个缩写词,仅仅是因
为它的发明者,TrollTech 公司的 CEO,Haarard Nord 和 Trolltech 公司的总裁 Eirik
Chambe-Eng 在联合发明 Qt 的时候并没有一个很好的名字。在这里,字母 Q 是 Qt 库
中所有类的前缀——这仅仅是因为在 Haarard 的 emacs 的字体中,这个字母看起来特
别的漂亮;而字母 t 则代表“toolkit”,这是在 Xt( X toolkit )中得到的灵感。
顺便说句,Qt 原始的公司就是上面提到的 Trolltech,貌似有一个中文名字是奇趣
科技——不过现在已经被 Nokia 收购了。因此,一些比较旧的文章里面会提到 Trolltech
这个名字。
好了,闲话少说,先看看 Qt 的开发吧!事先说明一下,我是一个比较懒的人,
不喜欢配置很多的东西,而 Qt 已经提供了一个轻量级的 IDE,并且它的网站上也有
for Eclipse 和 VS 的开发插件,不过在这里我并不想用这些大块头。
Qt 有两套协议——商业版本和开源的 LGPL 版本。不同的是前者要收费,而后者
免费,当然,后者还要遵循 LGPL 协议的规定,这是题外话。
安装完成后会有个 Qt Creator 的东西,这就是官方提供的一个轻量级 IDE,不过
它的功能还是蛮强大的。运行这个就会发现,其实 Qt 不仅仅是 Linux KDE 桌面的底
层实现库。而且是这个 IDE 的实现的这个 IDE 就是用 Qt 完成的。
Qt Creator 左面从上到下依次是 Welcome(欢迎页面,就是一开始出现的那个);
Edit(我们的代码编辑窗口);Debug(调试窗口);Projects(工程窗口);Help(帮助,这个
帮助完全整合的 Qt 的官方文档,相当有用);Output(输出窗口)。
下面我们来试试我们的 Hello, world! 吧!
在 Edit 窗 口空 白处点 右键, 有 New project... 这里我 们选第 三项 ,Qt Gui
Application。

然后点击 OK,来到下一步,输入工程名字和保存的位置。
点击 Next,来到选择库的界面。这里我们系统默认为我们选择了 Qt core 和 GUI,

还记得我们建的是 Gui Application 吗?嗯,就是这里啦,它会自动为我们加上 gui
这个库。现在应该就能看出,Qt 是多么庞大的一个库,它不仅仅有 Gui,而且有
Network,OpenGL,XML 之类。不过,现在在这里我们不作修改,直接 Next。
编缉推荐阅读以下文章
Qt 学习之路(10): Meta-Object 系统
Qt 学习之路(9):深入了解信号槽
Qt 学习之路(8): 创建一个对话框(下)
Qt 学习之路(7): 创建一个对话框(上)
Qt 学习之路(6): API 文档的使用
Qt 学习之路(5):组件布局
Qt 学习之路(4):初探信号槽
Qt 学习之路(3):Hello, world!(续)
Qt 学习之路(1):前言
剩余172页未读,继续阅读



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论3