介绍

用过Linux的人想必都知道Qt(不是QuickTime,呵呵)这个名称,KDE就是用Qt写的,我也是接触Linux后才认识它的。

Qt原先是奇趣科技TM(Trolltech)的产品,由Haavard Nord(Trolltech的CEO)和Eirik Chambe-Eng(Trolltech的董事长)于1991年开始它的历史,三年后他们创建了Quasar Technologies公司,后改名为Trolltech,其发展与KDE的发展紧密关联,可以说早期时每个KDE版本的发布都是Qt的一个里程碑事 件。之所以叫Qt,据说是因为字母“Q”在Haavard的Emacs所用的字体中很PP -_-!,而字母“t”是toolkit的意思。

Haavard和Eirik要开发Qt的起因是当时他们正在做一个项目(1991),必需在Unix、Macintosh和Windows环境下运 行。那个夏季的一天,Haavard和Eirik出去散步,当他们坐在一个公园长凳上时,Haavard说,“我们需要一个面向对象的显示系统。”。这次 讨论的结果为他们即将创建的跨平台GUI框架埋下了伏笔。

1991年,在设计上与Eirik合作,Haavard开始写了一些类,它们后来成为Qt。在这年的接下来时间里,Eirik提出了 “signals and slots”的想法,这也是Qt的一个重要特征。在这年末,在Haavard的提议下,两人一起下网开发“世界上最好的C++ GUI 框架”。

1994对这两个年轻的程序员来说是不幸的,没有一个客户,手头还是一个未完成的项目,没有钱。幸运的是,他们的妻子都有工作,可以支持他们(感动 啊!!)。之后感谢与Haavard的一个大学时候的教授的联系,一家公司给了他们用Qt开发运行在Unix和Windows上的软件的机会。终于在 1995年5月20号,Qt 0.90发布了,这是Qt的第一个公开发行版。

之后还有很多故事,如Qct KDE组织的成立,KDE和Gnome的PK,Qt协议的变更,及Qt的几个重要发行版,Nokia收购Qt,Qt支持LGPL协议等,就不介绍了。已经 有点跑题了,介绍就到这...

为什么用Qt

如果就写跨平台的程序,Qt是一个很好的选择,当然还有很好其它的GUI库,如wxWidgets、gtk等。我选择Qt主要是因为程序简单,可拓 展性强,代码思路清晰,文档强悍!一般写GUI,如果用到新的class都是再查文档、看例程的,而这点用起来比MFC方便、灵活。用MFC写程序不舒服 的地方时,很好时候代码是用向导生成的,MSDN中对于GUI的class的例程不够多。例程充足,这样代码完全可以自己写,这样条理就清楚了。

安装与编译

1. Commercial Edition

如果你用的是商业版本,那只要选择好对应开发平台的就可以了,如vs2005sp1的,安装下就可以了,连带Visual Studio Addon,连编译都省了。

2. Open-Source Edition

官方有提供MinGW下的安装版本,可以选择连带的Qt Creator。这个IDE比较赞的,支持一些简单的自动代码补全,可以方便的查看Doc。还提供了git、svn等版本控制工具的集成支持,当然还有 Qt Designer、Qt Linguist的集成。

如果用在VS2005/2008中使用,就只是自己动手编译了。编译过程很简单,下面假设IDE是VS2005,操作如下:

简单编译

a. 下载Qt原代码包,如qt_4.5.1_opensource.zip,解压到一个剩余空间大于3.5G的分区。b. 设置系统环境变量:

QTDIR —— 刚刚解压的Qt根目录,添加%QTDIR%\bin到Path,QMAKESPEC —— win32-msvc2005

c. 打开VS的Command Prompt,输入:

> configure> nmake

编译大约要2-4小时,编译结果占3.5G左右。

自定义编译

从上面的c步骤开始:

c. 打开VS的Command Prompt,输入:

> configure --help

查看configure的可以使用的选项

我自己可能会用的:

-release     编译release版本-debug          编译debug版本-debug-and-release  两个版本都编译-shared         编译dll版本-static         编译静态链接库版本-fast           configure时只生成目录级的Makefile-no-qt3support      不支持Qt3-qt-libjpeg     用Qt的jpeg解码,用system-jpeg时,软件发布到其它电脑上时jpg解码出问题了-vcproj         生成vs2005的vcproj工程文件,方便以后,一般不用,占地方-phonon         视频播放支持,需要DirectShow(DShow)-direct3d       direct3d支持,需要D3D SDK

注意:

用-phonon和-direct3d选项时,需要在之前设置环境变量,参与Qt的Readme。
DShow安装比较麻烦,因为MS已经停止DShow的支持了,取而代之的是Media Foundation,在Vista和Win7中开始应用。DShow的最后版本环境是D3D2005 SDK和Direct Show包,好像还要Windows SDK 2003云云,配置过,记不清楚了。

d. 修改Qt如果不想编译的部分

如不想编译examples目录下的文件,打开$(QTDIR)\examples\Makefile,修改为(添加skip-all和 skip-qmake两行)

all:skip-all:    D:\Qt\4.5.2-vs2008sp1\bin\qmake D:/Qt/4.5.2-vs2008sp1/examples\examples.pro  -o Makefile -spec win32-msvc2008    nmake -f Makefilefirst: allqmake:skip-qmake:    D:\Qt\4.5.2-vs2008sp1\bin\qmake D:/Qt/4.5.2-vs2008sp1/examples\examples.pro  -o Makefile -spec win32-msvc2008

这样编译都这里时就直接跳过了,注意设置时要慎重,一些目录下的代码可能是编译基本库文件所需要的,特别是src目录下的。如果你不想生成 qdemo.exe可以相仿地修改$(QTDIR)\demos\Makefile文件。

e. 编译后的清理

如果你打算以后动不再修改编译选项的话,又对Qt临时文件占地方不舒服的话,可以清理一些临时文件,最终可以减小到800M左右。

  1. 清理bin下除*.pdb和*.dll外的临时文件,注意临时文件指的是编译生成的文件,如*.obj、*.ilk之类的文件
  2. 清理lib下除*.prl和*.lib外的临时文件,*.prl不知道有什么用,反正小,就留着吧。
  3. 清理src下除vc[n].pdb外的临时文件,如vs2005是vc80.pdb而vs2008是vc90.pdb。
  4. tools、plugin和qmake目录类似

配置VS2005

1. Qt Visual Studio Add-in

Qt官方下载:http://qt.nokia.com/downloads/visual-studio-add-in

主要提供VS2005/2008的集成,如调用Designer、Linguist和一些帮助,还有修改Debug信息显示方式,使Debug时数 据显示更直观。

2. 好像没有了。。。

使用Qt写程序

1. 唯美主义 - 不使用Designer

我个人常用的方法,这样怎么开始Qt工程呢?

新建个目录,如hi_qt,再新建个文件main.cpp,生成工程文件hi_qt.pro

qmake -project

生成VS工程文件hi_qt.vcproj:

qmake -tp vc

打开hi_qt.vcproj,菜单Qt->Convert project to Qt Add-in project,这样就可以用Qt VS Add-in的功能新建Qt class了。

2. 一般方法

就是直接用Qt VS Add-in 的导向了,不爽的是一定要生成ui文件和qrc文件,当然你也可以事后删除它们,这个就不多说了。

3. 让Designer做大部分工作

主要是结合Qt VS Add-in和Designer完成大部分界面工作,如在界面中插入自己定义的Widget,写Style Sheet等。这个说起来比较复杂,不多说了,一般用得不多,以后有时间再慢慢整理。

参考

  1. C++ GUI Programming with Qt 4, 2006, A Brief History of Qt
  2. Qt Assistant 4.5.2
  3. Qt Home
  4. 初涉 Windows Mobile下的QT程序移植和部署

转载于:https://www.cnblogs.com/wenlg/archive/2010/05/11/1732390.html

Qt与VS2005/2008的完美配合(转)相关推荐

  1. Dokku和Docker的完美配合

    看到一篇不错的文章,收藏一下: [编者的话]本文作者介绍了如何在单机上将Dokku和Docker结合.Dokku是一个小型的PaaS平台,只需使用Git将代码push到对应的仓库上就能自动触发部署,构 ...

  2. 树莓派centos 第十四章 NAS与小米盒子分工合作,完美配合

    树莓派NAS与小米盒子分工合作,一个下载电影,一个播放电影,完美配合 1. 依据上几章,树莓派已经装好NAS,这里只需要插上电源,网线,开机即可 2.上网找一部电影 3.  打开浏览器,进入NAS管理 ...

  3. VS2005/2008/2010 增加代码边界线 缩进对齐线

    VS2005/2008 很简单,先关闭VS2008.2005,打开注册表,找到 [HKEY_CURRENT_USER]\Software\Microsoft\VisualStudio\8.0\Text ...

  4. 【Qt开源项目推荐】完美的Dock窗口布局解决方案 Qt-Advanced-Docking-System

    1 概述 1.1 介绍 这是GitHub上一个基于Qt实现并且非常完美的Dock窗口布局解决方案--Qt-Advanced-Docking-System,支持Windows.Linux和MacOS跨平 ...

  5. vs2005 2008快捷键

    VS系统通用快捷键: 1.自动排版 (类似VC6中的Alt+F8)  编辑.格式化选定内容 Ctrl + K,Ctrl + F 根据周围的代码行,正确缩进选定的代码行. 2.注释与去掉注释功能. 编辑 ...

  6. linux qt 找不到 lgl,Linux Qt cannot find -lGL错误完美解决方案(亲测有效)

    http://c.biancheng.net/view/3901.html 对于很多 Linux 发行版本,Qt 安装完成后如果直接编译或者运行项目,会出现"cannot find -lGL ...

  7. Linux Qt cannot find -lGL错误完美解决方案

    对于很多 Linux 发行版本,Qt 安装完成后如果直接编译或者运行项目,会出现"cannot find -lGL"错误,如下图所示: 这是因为 Qt 找不到 OpenGL 的动态 ...

  8. CAXA 电子图版 二次开发 用vs2005 2008 2010 编译

    CAXA 电子图版 二次开发 首先还是需要安装VC6.0的.用VC6.0的MFC模板建立一些编程的头文件,必须文件 用VS2005+ 版本 转换 工作版本. 编译的时候要修改一些设置 包括资源文件,和 ...

  9. 很棒的在线裁图工具jQuery1.4.2 + jquery.bitmapcutter.js + BitmapCutter.Core+的完美配合

    相关博客: http://www.cnblogs.com/CoreCaiNiao/archive/2011/07/15/2107056.html

最新文章

  1. USB驱动程序之概念介绍学习笔记
  2. Android 学习视频
  3. 蓝桥杯省赛考点_【蓝桥杯单片机01】从历年决赛真题中寻找单片机常见的考点...
  4. java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)
  5. Python 解析构建数据大杂烩 -- csv、xml、json、excel
  6. python执行Linux系统命令
  7. mysql 与紫金桥_现在常用的国产组态软件哪个更好用些?
  8. 用c语言实现基本数据结构(图)
  9. python残差神经网络_残差神经网络
  10. halcon 1维测量
  11. 情感驿站005:为什么大多数人永远不会真正成功?
  12. 【新年快乐】2022年跨年钟声即将敲响,2021终将成为历史
  13. java中modifier_Java Modifier工具类
  14. mysql error1205 博客_MySQL的ERROR 1205错误分析
  15. 第三章 灰度变换与空间滤波
  16. Win10在某些程序输入中文变成问号的解决方法
  17. md5编码java_MD5编码工具类 MD5Code.java
  18. C语言 线程的回收与子线程返回值的接收
  19. 阿里云负载均衡 SLB CLB 虚拟服务器组配置
  20. 职业精神:薪水到底谁来决定

热门文章

  1. 几种web报表打印方案的比较
  2. GIS之旅——研究生总结
  3. python 获取json中最大值_Python中高效使用JSON的四个小窍门
  4. 如何卸载mysql5.6.28_如何完全删除MySQL以进行全新安装
  5. wordpress PHP合并js,在WordPress函数文件中包含JS(使用PHP)的最佳实践
  6. centos安装mysql wsl_win10安装wsl2和docker
  7. jmeter学习总结
  8. c语言16位字节只能用到255,《C语言程序设计》月考试题(第三章).doc
  9. python属于汇编语言还是高级语言_计算机语言Python解释器
  10. Python基础——pickle(保存与提取数据)