EDN首页   博客首页

1

关于投票
Qt学习手记之二(入门篇)
按照习惯,学习一个库,一般从写一个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子目录下)。



运行结果:


转自:OwlMan的Blog
系统分类: 嵌入式
用户分类: Qt学习
标签: 无标签
来源: 转贴
发表评论 阅读全文(371) | 回复(0)

0

关于投票
使用mingw在windows下搭建c/c++IDE环境

操作系统:windows2000 sp4

安装软件:mingw, Visual-MinGW 0.53

安装步骤:

(1)        下载mingw:你可以直接下载MinGW-4.1.1.exe,通过网络安装(但是安装完毕后有个小问题,下面再说);也可以下载单独的包自己解压后配置使用,这看你水平高低了J

(2)        下载Visual-MinGW 0.53,这就是一个exe文件,比较简单

(3)        运行MinGW-4.1.1.exe,将所有的东西都装在C:MinGW(默认目录)。这里额外做点说明:其实MinGW-4.1.1.exe就是将你所需要的包从网络上传输到你的机器上,然后解压安装就是了。我这里只安装了”current”,没有安装”source”

(4)        安装Visual-MinGW 0.53,这文件很小,是作者全部用Windows APIs写的,速度很快。安装完毕后,Visual-MinGW会提示让你寻找compile目录,这时候选mingw安装目录(默认是C:MinGW)即可.但是这里产生了一点问题:软件提示找不到make.exe(天哪,没有make还写什么C程序啊),不过不要着急,你可以下载mingw32-make-3.80.0-3.exe,安装后就可以了。

(5)        下面打开Visual-MinGW,想写点啥就写点啥吧

提示:

       (1)MinGW-4.1.1.exe安装时(这里只是安装”current”,不安装”source”)下载以下几个包:

        ada.tar.gz

binutils.tar.gz

g++.tar.gz

g77.tar.gz

gcc.tar.gz

java.tar.gz

runtime.tar.gz

w32api.tar.gz

objc.tar.gz

mingw32-make.tar.gz

如果你水平可以,完全可以单独下几个自己需要的包配置一下,而不需要安装

(2)如果你要在command line模式下使用编译器,可以配置几个环境变量:

    PATH C:MinGWbin;
LIBRARY_PATH C:MinGWlib
C_INCLUDEDE_PATH C:MinGWinclude
CPLUS_INCLUDE_PATH C:MinGWincludec++3.4.2;C:MinGWincludec++3.4.2mingw32;C:MinGWincludec++3.4.2backward;C:MinGWinclude

http://www.yuanma.org/data/2006/0406/article_213.htm

系统分类: 嵌入式
用户分类: Qt学习
标签: 无标签
来源: 转贴
发表评论 阅读全文(301) | 回复(0)

0

关于投票
跨平台的GUI Framework : Qt

跨平台是程序设计师长久的梦想,谁都想要程序只写一次,就能在各种平台执行,Java当初就是以『Write once, run every where.』打响知名度,因此号称是终极程序语言,也吸引了很多人头向Java阵营。Java以语言角度算是不错的语言,语法干净简洁,OO支持也算完整,Framework设计的也不错,写出来的程序语法也蛮漂亮的,还Open Source,且支持应用很广,从GUI、Component、Web、Embedded都有支持,但Java技术最大的致命伤就是执行速度缓慢,透过Virtual Machine技术使得Java得以实现跨平台,什么是Virtual Machine呢?简单的说,就是在给个OS上在装一个JavaOS跑Java程序,这种方式就像你写了一个Windows程序,然后也宣称是跨平台,只要User在Linux或Mac装上VMWare,然后在VMWare下灌Windows XP,这样也能在Linux、Mac下执行你的Windows程序,但经验告诉我们,用VMWare跑其它OS,速度大约只剩下6成左右而已,Java程序速度慢的原因就在这里,这是Virtual Machine的宿命。


C/C++的哲学就不一样了,C/C++强调的是『Write once, compile every where.』,同一份程序代码,只要在该平台重新Compile成该平台的执行档,就能在该平台执行,若文字模式下的程序,的确可以跨平台,程序完全不需修改,但GUI盛行以后,由于各GUI的Library都不一样且没有标准,所以GUI程序并没办法跨平台Compile,因为各平台都有专属的Library。但是C/C++优势就是执行速度快,若能解决GUI Library的问题,则跨平台即可解决。


除了GUI Library需要统一外,还得看该Library设计的好不好才行,Linux GUI我没写过就不说了,若在Windows平台,Borland的C++ Builder使用Delphi的VCL Library,Microsoft的Visual C++可以用MFC和.NET Framework,首先来看Borland的C++ Builder,它使用标准的ANSI C++语言开发,利用VCL写出来的程序也算蛮漂亮的,执行速度很快,比较麻烦的是C++ Builder当初为了缩短上市时间,并没有设计自己的Library,而是藉用Delphi的Library,导致C++ Builder在Compile时,是先用Delphi的Compiler将VCL compile成object file后,再用C++ Builder将你写的C++程序compile成object file,最后再用Linker将所有的object file link起来,由于这都是IDE在做,对程序设计师似乎影响不大,但VCL由于是Delphi的Library,所以若想深入研究VCL的source code时,则必须学Delphi的Pascal才行,否则看不懂VCL source code,这也是很多人对C++ Builder却步的原因。


再来看Microsoft的Visual C++,MFC用的是完整的ANSI C++语言,所以语言部分不是问题,但若你看过用MFC写的程序,你一定会惊讶为什么这么复杂,程序代码非常冗长不好看,且MFC是有名的喃学,若Visual C++搭配.NET Framrwork,则无法使用ANSI C++,得用其.NET平台版本的C++/CLI,相信这点很多人就有意见了,不过.NET Framework由于设计的不错,所以写出来的程序相当精简漂亮,感觉和C++ Builder差不多,不过无论是C++ Builder或Visual C++开发的GUI,所开发出来的程序都无法跨平台,当然也无法跨平台Compile。


之前曾在博客员的C++ Blog看到有人在讨论Qt,一个跨平台GUI的Framework,当初我以为只是另外一个走Virtual Machine技术的产物,只不过使用C/C++为语言而已,所以当时也没特别注意,今天下课到天珑书局逛逛,看到有Qt的原文书,就顺手翻了一下,我才发现跟我原本想象的完全不一样。


Qt拥有一个单一的Library,让你开发各种不同平台的程序,目前支持Windows、Linux、Mac、UNIX、Embedded Linux,讲白话点,就是它提供了一个Library让你开发GUI程序,写好之后,只要在各平台重新Compile后,就可以在各平台执行,而且使用完整的ANSI C++语言,且不限Compiler,只要是C++的Compiler都可以,重要的是,该Library相当漂亮,写出来的程序很像C++ Builder或.NET Framework的那样精简,不会向MFC那样复杂。目前Qt已经到第四个版本,GUI部分算支持的相当完整,且支持数据库、XML、Multi-Thread、Socket等方面的programming,看到这些特色,我毫不犹豫就买了一本讨论Qt的书来研究了,这几乎是我多年来的理想,若以OO角度来说,无论后端是什么数据库,只要透过相同的Interface,不同数据库的Class来实做这个Interface,前端GUI的程序写法完全不用改变,同理,面对不同的OS,理论上只要透过相同的Interface,不同OS的Class各自实做这个Interface,前端GUI的程序也完全不用改变,最后只要靠Compiler将程序compile成各平台的原生程序即可,这样即可保证其执行速度,不用再靠Virtual Machine。但很可惜这个理想,这么多年来都没人可以做出来,或许是我孤陋寡闻吧,书上说Qt 3曾在2002年得过Jolt的Productivity Award,Jolt是相当有名的奖,能只写一次程序就能跨平台,且保证其执行速度,当然会大大提升Productivity了,我最近会玩一下Qt,看看Qt是否适合开发大型应用程序,假如Qt适合的话,Qt无疑才是GUI终极解决方案,有强力的ANSI C/C++语言背书,又有单一的GUI Library,且精简漂亮,又能Compile成各平台的原生执行档,几乎是最完美的解决方案了,剩下只是看其好用不好用而已。C/C++技术还有什么遗憾吗?就是Web,目前还没看到C/C++可以开发Web Application的技术,Microsoft也宣称短期之内不会让ASP.NET支持C++/CLI,若以技术而言,GUI的Library绝对比Web的Library难度高,因为得面对各平台API的实做,而Web只要吐出HTML即可,不过既然Qt对最难的GUI都能解决了,相信C/C++在Web有统一的Library应该也是指日可待了。

 

http://www.cnblogs.com/oomusou/archive/2007/05/23/528689.html

系统分类: 嵌入式
用户分类: Qt学习
标签: 无标签
来源: 转贴
发表评论 阅读全文(268) | 回复(0)

0

关于投票
Qt 学习(1)
前言

在学校里在DOS和Unix上用了三年的C和C++, 一直想用C++来开发Windows应用程序,
但工作后一直没机会。而且听前辈们说直接用API来开发太烦,MFC据说也是复杂无比,
所以一直没敢尝试。
今天在网上看到有人介绍QT(蕭鴻森:http://www.cnblogs.com/oomusou/archive/2007/05/23/528689.html),
觉得不错。决定从此开始学习C++的Windows编程。

虽然,Qt的主要目的并不是Windows编程,但从它开始Windows编程似乎也不错。
毕业7年了,一直用VB, Delphi和VS.net,现在开始再用C++,也不知道学不学得会,
不管怎样,把自己的学习过程贴出来,供大家参考,并不是件坏事。
也希望看到的朋友能多指正。

本笔记只记录学习过程,它不是教程,条理可能不够清晰。

资料准备

学习一项语言,教程是必不可少的,在google搜索“Qt4教程下载”,发现CSDN上可以下载。
下载地址:http://download.csdn.net/source/198333

看了前面的介绍,以及Foreword和Preface,才知道Qt是Trolltech这个公司出的。
相关的软件当然要从它的网站上下载。
Trolltech下载地址:  http://trolltech.com/developer/downloads

到此为止,我的理解,Qt是一个跨平台的库和工具包。


软件准备及安装


软件和源代码和安装程序的具体下载地址:
HTTP:

http://ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/source/qt-win-opensource-src-4.3.0.zip
http://ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/source/qt-win-opensource-4.3.0-mingw.exe


FTP:
ftp://ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/source/qt-win-opensource-src-4.3.0.zip
ftp://ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/source/qt-win-opensource-4.3.0-mingw.exe

下载完成,以为运行qt-win-opensource-4.3.0-mingw.exe就可以安装了,
安装时才发现需要先安装MinGW, (虽然允许直接在安装时下载,但我在安装时直接下载有问题)。



google一下,可以从Sourceforge上下载。
E文不行,Sourceforge上有好多可以下载的内容,经过仔细研究,发现下载叫Current的Package就可以了。
后来参考了下面这篇文章http://www.yuanma.org/data/2006/0406/article_213.htm,并经过几次安装才算清楚些。



http://sourceforge.net/project/showfiles.php?group_id=2435进入,
然后展开Current,再展开MinGW,下载最新版本,现在是5.1.3。
从迅雷中COPY出来的下载地址为:
http://jaist.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.3.exe


下载完MinGW之后,直接运行就可以安装(我安装在C:\MinGW),安装过程中过程中还需要下载,
此时选择下载Current,然后选择所有的包
(尽管有些包可能用不到,后面的安装还是无法进行,我第一次安装时只选择了第一项,
结果后面的安装提示没有g++),
这个过程需要较长时间,约20多分钟。

MinGW安装完成后,运行qt-win-opensource-4.3.0-mingw.exe,
在Find MinGW的框中,填入Previously installed MinGW的地址:通常是C:\MinGW。


装完之后