QT 4.2.2的安装(安装完还要再编译,注意设置Windows Path)
(安装篇)
前奏:
提到C++的GUI Framework估计大多数人都会想到MFC、VCL,因为在十年前的COM时代,这两个大家伙几乎垄断了整个C++ windows平台上应用程序的开发市场, 但是最近几年,随着.NET framework的推出。使得MFC这样原本就非常丑陋,麻烦的framework开始风光不再了,我也学过几天的MFC,那种宏作为消息满天飞的编程风格让我很快就放弃了,几次和朋友的交流中,我们都认为C++其实不太适合做GUI程序,但是我必须面对一个问题:当我需要用C++写个GUI程序的时候,我该用什么?我一直非常犹豫,很显然,我不太愿意用MFC,我也不太愿意为了VCL再去学一个IDE的用法,而且我不得不用C++写GUI的时候往往是在非windows平台上,显然上面两个framework就更不符合这个要求了。经过了一番调查,我最终选择了Qt这个库,于是也打算在这个blog上开一个学习手记系列。
下载:
好了,现在先让我们搭建工作环境,讲述Linux上的Qt环境设置的文章网上很多,我这里不想再累述了,有兴趣的人可以google之。我下面谈在windows下的安装和设置:首先,我们都知道,Qt这样的开源产品和GCC编译器的密切关系,所以首先我们必须有MinGW环境,那么第一步,就必须先安装MinGW,我这里推荐一个IDE,dev-cpp,他是基于MinGW的一款C++ IDE,自带了MinGW,集成了gcc、g++、gdb等工具,非常有用。下载地址如下:
http://www.bloodshed.net/devcpp.htm
接着,我们需要下载Qt了,熟悉开源产品的朋友都知道,这种产品通常有两种安装方式:第一,源码安装,这个下载后,在命令行(shell)进行本地编译即可,这个在Linux下安装软件是非常常见的;第二,是二进制安装,通常有自带的GUI界面的图形安装想到,在windows下通常是这种安装方式,其实那种安装方式和操作系统没什么必然的联系,只是一种习惯而已,既然我们是在windows下,那么就入乡还俗,用第二种方式,我们需要下载Qt的Runtime for MinGW包,地址如下:
http://www.trolltech.com/
安装:
下载之后,你会得到一个qt-win-opensource-4.2.2-mingw.exe文件,双击后启动安装程序,和通常安装windows程序一样基本上只要一路next即可,只有一个地方要特别注意,就是他会问你MinGW的路径,你如果安装的就是MinGW,那么就写X:/MinGW(X是你安装MinGW所在的目录),如果你安装的是dev-c++就写你安装他所在的目录,如下图所示:
当然你也可以选择这个时候在线安装MinGW,可是这样就取决于网络状况了(这里是直接连接国外的服务器的,一般会很慢,经常断线),这里不鼓励使用。最后,等向导完成后,你会发现你的开始菜单里多出一项Qt by Trolltech v4.2.2 (OpenSource)菜单项,到这里还没最终完事,因为Qt没还没建立debug库,会导致在安装目录之外你不能运行Qt程序,因此展开该菜单项,选择Qt 4.2.2 (Build Debug Libraries),就会自动编译debug库,编译时间很长,需要耐心等待,不熟悉源码安装的方式朋友们也可以体验下源码安装的感觉(一条条命令往上飞,彷佛穿越了时空,-_-b)……
设置:
虽然,qt自带了命令行环境(Qt 4.2.2 Command Prompt),但是我们可能还是希望把环境变量全局化,因此我们可以右击"我的电脑->属性->高级->环境变量->系统变量的path"值后面加上下面三个路径:
X:/Dev-Cpp/bin
X:/Dev-Cpp/mingw32/bin
X:/Qt/4.2.2/bin
目录之间用";"分割,至此环境搭建完成。
检验安装:
Qt自带了很多DOME。我们可以在X:/Qt/4.2.2/examples/下找到,例如我们可以用命令行环境进入到X:/Qt/4.2.2/examples/tutorial/t1目录下,然后运行qmake命令编译该程序DOME,如果安装没问题,会在该目录下的relese目录下找到Qt版的Hello World程序,如下图所示:
(入门篇)
按 照习惯,学习一个库,一般从写一个Hello World程序开始,在上篇中我们已经在库的安装目录里看到了这样的例子,但是那个例子只有一个button,过于简单了,甚至不能算是一个完整的窗体程 序,为了比较深切的体会Qt编程的方式和思想,我们有必要自己写一个相对比较复杂的Hello程序,我们的程序里应该有一个面板里面放置两个控件(一个无 事件控件,和一个有事件控件)来组成我们的程序,对于一个事件驱动的程序来说,这样体验才算是比较完整的,ok,首先,我们可以在上一个程序的基础上进行 扩展,qt的类名字都很直观,使得我们不需要借助手册,就可以猜到一些控件的类名(真的不知道可以打开Assistant查询), 于是一个程序转眼便敲入了,
编码:
代码如下:
#include <QApplication.h>
#include <QLabel.h>
#include <QWidget>
#include <QFont>
#include <QPushButton.h>
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
QWidget winform; //作为一个主窗体
QLabel label("<h1 style='color:blue'>Hello, QT</h1>",
&winform); // Label 显示hello信息
QPushButton button("OK", &winform); // 退出窗体按钮
winform.resize(200,150); //设置大小
label.resize(200,100);
button.setGeometry(10, 100, 150, 40);
button.setFont(QFont("宋体",10, QFont::Bold)); //设置字体
label.setAlignment(Qt::AlignCenter);
// 设置事件关联
QObject::connect(&button, SIGNAL(clicked()), &app, SLOT(quit()));
winform.show();
return app.exec();
}
这里大概只有几点需要说明:
1。这里的头文件和所用的类几乎是一一对应的,因此很容易理解。
2。任何一个Qt程序都得从一个叫QApplication的类对象开始,他引入来自入口函数main的参数,返回成员函数exec()的运行结果。
3。可以用于面板的控件有很多,就我们这样的需求,一个QWidget足够了。
4。QObject::connect(&button, SIGNAL(clicked()), &app, SLOT(quit()));这句代码确定了button控件需要响应的单击(click)事件和事件的处理函数(quit())的关联。
编译:
OK, 编码完成,保存为一个cpp文件(比如Qhello.cpp)到一个临时目录下(比如E:/tmp/),然后打开我们的命令行环境,进入这个临时目录,首 先,要建立一个Qt工程文件,输入命令qmake -project 回车后我们得到一个名叫qt.pro的工程文件,接着我们要建立makefile文件(这个文件会设定好每一个编译选项,以方便我们后来的编译),继续输 入命令qmake,这样我们就在该目录下看到了三个makefile文件:
Makefile.Debug:编译Debug版(即带Debug信息的版本,一般用于测试和调试)的编译选项。
Makefile.Release:编译Release版(即不带Debug信息的版本,一般用于产品的发布)的编译选项。
Makefile :上面两个文件的总聚合器,他用于直接响应make命令。
最 后在命令行里输入make命令,编译该工程,该工程默认生成的是Debug版程序,你可以在debug子目录下找到,如果需要更改源码,改完后,重新 make就可以了,如果没有加入新文件,无需更改makefile和工程文件。如果确定可以发布,可以输入make release命令来生成Release版本(在Release子目录下)。
http://blog.csdn.net/henreash/article/details/3541311
QT 4.2.2的安装(安装完还要再编译,注意设置Windows Path)的更多相关文章
- 最小化安装的centos7.5上编译安装git2.19
VMware Workstation已经采用最小化安装CentOS7,显示版本为CentOS7.5,准备采用yum安装git. 采用yum list git发现可安装的GIT软件包版本1.8.3.1, ...
- qt超强绘图控件qwt - 安装及配置
qwt是一个基于LGPL版权协议的开源项目, 可生成各种统计图.它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式 ...
- Qt on Android: Android SDK安装
之前我在 <Windows下Qt 5.2 for Android开发入门>一文中介绍了 Windows 下 Qt on Android 开发环境的搭建,略过了 Android SDK 的安 ...
- Qt最新版5.12.2在Win10环境静态编译安装和部署的完整过程(VS2017)
一.为什么要静态编译 用QtCreator编译程序时,使用的是动态编译.编译好的程序在运行时需要另外加上相应的Qt库文件,一大堆dll文件.如果想将生成的程序连同所需要的库一起完整地打包成一个可执行程 ...
- paper 139:qt超强绘图控件qwt - 安装及配置
qwt是一个基于LGPL版权协议的开源项目, 可生成各种统计图.它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式 ...
- 安装部署完office web apps 后,无法浏览Word
安装部署完office web apps 后,在sharepoint 2010浏览器中浏览Word提示:“由于出现意外错误,Word Web App 无法打开此 文档 进行查看. 要查看此 文档,请在 ...
- QT程序制作deb包并安装在应用程序菜单
制作原理:打包:将QT制作的源程序(没有编译的)用debian压缩打包(这里是用脚本对源程序再编译)安装:将deb包中的源程序解压(默认解压到根目录)到规定系统文件中并编译(postinst脚本)卸载 ...
- Qt Chart 5.7.0 傻瓜安装教程
前提 qtchart 里的README文件(注意红色标记处)(本人翻译不行.多多见谅,也可以在评论里纠正( ⊙ o ⊙ )) --------------- Qt Charts 5.7.0 ----- ...
- Qt开发的程序在没有安装Qt环境的机器上可能出现的一些问题
Qt开发的程序在没有安装Qt环境的机器上可能出现的一些问题,如:除png外的其它类型的图片,如:jpg.ico.bmp等,还有中文乱码等问题,出现这些问题的本质是Qt对这类文件格式或编码格式的支持方式 ...
随机推荐
- Qt持久性对象进行序列化(同时比较了MFC与Java的方法)
Mfc和Java中自定义类的对象都可以对其进行持久性保存,Qt持久性对象进行序列化当然也是必不可少的.不过这个问题还真困扰了我很长时间……Mfc通过重写虚函数Serialize().Java则是所属的 ...
- Android Studio创建库项目及引用
Android Studio创建库项目其实创建的是在主项目下创建Module模块,这个Module模块创建的时候选择库项目模式. 为什么要这样处理呢?因为在Android Studio中一个WorkS ...
- SQL之概念
SQL即结构化查询语言,是一个功能强大的数据库语言,可以分为: 1.DML即数据操作语言,用于检索或者修改数据: 2.DDL即数据定义语言,用于定义数据的结构,如创建.修改.删除等: 3.DCL即数据 ...
- Atitit.Gui控件and面板----web server区----- web服务器监控面板and控制台条目
Atitit.Gui控件and面板----web server区----- web服务器监控面板and控制台条目 1. Resin4.0.22 1 2. 查看http连接数::Summary>& ...
- PHP:根据IP地址获取所在城市
文件目录: ipLocation -----qqwry ----------QQWry.Dat -----ipCity.class.php ipCity.class.php文件代码: <?php ...
- 读取中兴3G告警log告警文件到集合
1.文件格式 ALARM_ID=102305_404205 EVENT_TIME=-- :: NOTIFICATION_TYPE= MANAGED_OBJECT_INSTANCE=NodeId=,Bs ...
- Mybatis 示例之 复杂(complex)属性(property)
Mybatis示例专栏:http://blog.csdn.net/column/details/mybatis-sample.html Mybatis的复杂属性,Mybatis的这个特点很少被提及,但 ...
- 一次完整的HTTP请求所经历的7个步骤(前三步是浏览器工作,后四步是服务器工作)
HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1. 建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连 ...
- 修改进程占用内存SetProcessWorkingSetSize函数(多篇相关文章值得学习)
物理内存和虚拟内存 物理内存,在应用中,自然是顾名思义,物理上,真实的插在板子上的内存是多大就是多大了.看机器配置的时候,看的就是这个物理内存. 如果执行的程序很大或很多,就会导致物理内存消耗殆尽.为 ...
- C#用正则表达式去掉Html中的script脚本和html标签
原文 C#用正则表达式去掉Html中的script脚本和html标签 /// <summary> /// 用正则表达式去掉Html中的script脚本和html标签 ...