`
Finder
  • 浏览: 27391 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Qt学习之路(1):前言

    博客分类:
  • Qt
阅读更多


 

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良好的设计等等。

闲话少说,还是尽快开始下面的学习吧!

分享到:
评论
15 楼 mikeandmore 2009-11-23  
七猫 写道
boost现在有ui解决方案了?
winx可能是类wtl,atl
gtkmm就是gtk封装,也全是自画,不是native控件。
qt基本上也是自己做,没有用native控件,所以速度有点慢吧。

此 native非彼native呵呵。

ui和OO语言的冲突就是signal-slot了,boost提供了boost::signal。这个东西被libsigc++借鉴走了,libsigc++被gtkmm用作signal-slot。gtkmm没有用gtk的signal
14 楼 mikeandmore 2009-11-23  
13 楼 ray_linn 2009-11-22  
mikeandmore 写道
smiletuna 写道
Qt是native c++的gui里面 综合起来 最不错的一个了...

qt不是native C++的。
他是自己弄了一个moc处理,比C++多出来例如反射等功能的。比较复杂。

个人感觉qt类比c++类似于objective-c类比于C。。。。

PS对于native c++的ui解决方案,好像boost那群人给出的解决方案比较靠谱。gtkmm还有winx(好像是这么拼)就是用的类似这种方案的。



胡扯,moc只是预处理器。。。。
12 楼 七猫 2009-11-22  
boost现在有ui解决方案了?
winx可能是类wtl,atl
gtkmm就是gtk封装,也全是自画,不是native控件。
qt基本上也是自己做,没有用native控件,所以速度有点慢吧。
11 楼 mikeandmore 2009-11-22  
qt党建个专辑吧。。。^_^
10 楼 java6ean 2009-11-22  
不才,也写了一些关于Qt的东西,欢迎过来讨论:
http://java6ean.iteye.com/admin/blogs/518276
9 楼 mikeandmore 2009-11-22  
smiletuna 写道
Qt是native c++的gui里面 综合起来 最不错的一个了...

qt不是native C++的。
他是自己弄了一个moc处理,比C++多出来例如反射等功能的。比较复杂。

个人感觉qt类比c++类似于objective-c类比于C。。。。

PS对于native c++的ui解决方案,好像boost那群人给出的解决方案比较靠谱。gtkmm还有winx(好像是这么拼)就是用的类似这种方案的。
8 楼 halida 2009-11-21  
论开发效率,还是wxpython和pyqt。。。
当然,项目有需求就另说了。
7 楼 七猫 2009-11-09  
qt功能非常强大,速度也不错,经常能超过C#,
wxwidgets功能弱多了。不过非常native,
6 楼 arust 2009-11-09  
Qt 太庞大了,编译非常耗时。相比之下,wxWidget 就小多了,功能却不相上下
5 楼 smiletuna 2009-11-05  
Qt是native c++的gui里面 综合起来 最不错的一个了...
4 楼 linkerlin 2009-10-23  
还有下文么???
3 楼 bachelor007 2009-10-19  
咋不继续写了涅?
2 楼 beckle_ye 2009-10-15  
跟上学习……
1 楼 lhyasia 2009-10-15  
然后捏?接下来呢?

相关推荐

    Qt 学习之路:DZY

    ### Qt学习之路:核心知识点概览 #### 一、前言 - **Qt简介**:Qt是一个跨平台的C++图形用户界面应用程序开发框架。它不仅支持Windows、macOS、Linux等主流操作系统,还能用于开发嵌入式系统、移动设备应用(如...

    Qt 学习之路2.pdf

    ### Qt 学习之路2.pdf 知识点详解 #### 1. 序言与背景 **《Qt 学习之路2》** 是由作者豆子撰写的一系列关于 Qt 的学习教程,旨在更新并扩展其之前的教程内容。该教程最初在 2009 年发布,基于书籍《C++ GUI ...

    Qt+学习之路+2

    - **背景**: 本文档是基于作者之前的一个系列教程——《Qt学习之路》的更新版本,旨在适应Qt的新版本和发展趋势。 - **目的**: 更新和完善原有教程内容,使其更适合Qt 4.x和即将到来的Qt 5的学习需求。 - **定位**: ...

    QT学习之路2.pdf

    ### Qt学习之路2.pdf知识点概览 #### 一、序言 - **背景介绍**:本书作为《Qt学习之路》的第二版,旨在为读者提供更深入、更系统的Qt编程学习指南。书中提及51CTO网站上的入门教程,该教程基于《C++ GUI ...

    Qt学习之路---尤其适用Qt初学者

    ### Qt学习之路——尤其适用Qt初学者 #### 前言 Qt是一个强大的跨平台应用程序开发框架,广泛应用于桌面和嵌入式系统。对于初学者而言,掌握Qt的基础及其核心特性至关重要。本书《Qt学习之路》是专为Qt初学者准备的...

    Qt学习之路 绝对经典

    ### Qt学习之路 绝对经典 #### 一、前言:C++ GUI编程的选择与Qt简介 在C++的世界里,GUI(图形用户界面)编程并非语言标准的一部分,这与Java有所不同,在Java中,开发者可以选择AWT/Swing或SWT/JFace等标准库来...

    其实这本PDF就是Qt学习之路第一版

    ### Qt学习之路知识点总结 #### 一、前言:Qt简介与选择 - **Qt**是一种跨平台的应用程序开发框架,广泛应用于桌面、移动设备及嵌入式系统的GUI应用程序开发。 - C++的GUI编程并非C++标准的一部分,因此开发者在...

    QT学习之路

    ### QT学习之路知识点总结 #### 一、前言:为何选择Qt? - **Qt与C++ GUI编程**:Qt是C++的一种GUI编程框架,并非C++标准的一部分。相比之下,Java有内置的AWT/Swing支持,而C++提供了多种第三方库作为GUI编程的...

    qt学习之路.pdf

    《Qt学习之路》的前言部分介绍了C++的GUI编程与其他编程语言的不同。在Java中,GUI是其标准库的一部分,而对于C++来说,GUI编程并非标准内容。因此,对于C++开发者来说,需要依赖第三方库来完成GUI的开发。本书推荐...

    Qt学习之路第二版

    ### Qt学习之路第二版知识点概览 #### 一、序言 - **修订背景**:作者豆子在2009年曾发布一系列Qt入门教程文章,这些文章基于书籍《C++GUI Programming with Qt 4, 2nd Edition》编写。经过三年的发展,Qt经历了...

    QT学习之路(适合新手)

    QT学习之路是一份适合新手入门的QT开发教程,旨在帮助初学者快速掌握QT的基本概念和应用。这篇教程由DZY整理,旨在鼓励自学者通过清晰易懂的方式学习QT这一强大的跨平台应用程序开发框架。 1. **前言**: 在学习QT...

    Qt学习之路

    ### Qt学习之路知识点详解 #### 一、前言:Qt简介及优势 - **Qt**是一种跨平台的应用程序开发框架,主要使用C++语言编写,同时也支持Qt Quick和QML来构建用户界面。Qt框架提供了丰富的API,可以用于开发桌面应用、...

    Qt学习之路2 (基于Qt5.0.1共58章)

    基于最新的Qt5.0.1的学习书籍,非常适合QT5的入门学习。 目录 1. 序 2. Qt 前言 3. Hello, world! 4. 信号槽 5. 自定义信号槽 6. Qt 模块简介 7. MainWindow 简介 8. 添加动作 9. 资源文件 10. 对象模型 11. 布局...

    Qt4-学习之路1

    在《Qt 学习之路:从入门到精通》一书中,作者豆子(FinderCheng)介绍了Qt的基础概念及其重要性。Qt是一个跨平台的应用程序开发框架,支持多种操作系统,包括Windows、Linux和Mac OS等。本书旨在帮助读者了解Qt的...

Global site tag (gtag.js) - Google Analytics