qt入门,最简单的qt程序

    最近因为工作的关系需要研究qt了,客观的说,作为一个跨平台的代码框架,qt还是不错的,网上有大量吹捧qt的文章,我就不重复了。但是qt 也实在并不可爱,可能是因为人手太少的原因,qt的相关书籍,示例代码,帮助系统,辅助工具,社区支持等等做得都远远不够。当然我这样说也有些不厚道了,用惯了微软的东西了也不要动不动就拿微软做为标准啊,微软公司有多少人(其实更要命的是微软拉拢的帮手有多少人),小公司确实很难和这个庞然大物比较的。 废话太多了,反正我就是觉得qt很多地方都很不爽。多余的话就不说了。

    学习qt,首先要安装qt的编译环境,我这里使用qt4(这年头,qt4的资料是少之又少啊),在windows环境下开发,编译工具用Visual .Net 2005(估计要晕倒一大片的,实在不行,2002之类的也是可以的),安装过程比较简单,在这里就省略了。最终的标准就是你可以运行qt自带的例子了,其实这些例子还是挺漂亮的,而且这是跨平台的。

   开始编写第一个qt程序了,建一个目录,例如d:/qt/study/hello,然后建一个main.cpp的空文件,开始写代码,其实最简单的qt程序只有几句话:

 #include <QApplication> //包含QApplication头文件
#include <QPushButton> //包含QPushButton头文件

int main(int argc, char *argv[])  // 还是标准的main函数
{
   QApplication app(argc, argv);  // 构造应用,同MFC中的WinApp
    QPushButton hello("Hello world!"); // 构造PushButton
    hello.resize(100, 30);    // 设置按钮大小
    hello.show();      // 显示按钮
   
    return app.exec();     // 执行应用,同MFC中的Run
}

注释写得够罗嗦的了,自己看看就行了。最后是编译程序,qt的编译不太友好啊,简单的说就是:

打开Visual Studio .Net命令行
定位到d:/qt/study/hello目录下(这个目录只是个示例,你应该知道输入你自己的目录)
执行qmake -project,目的是生成qt的工程文件,以pro扩展名结尾的那个
执行qmake -t vcapp,目的是生成VC工程,可以用.Net 2005打开的工程
执行qmake,目的是生成Makefile文件,不是让我手写这个文件,我已经谢天谢地了:)
执行nmake,目的是编译Makefile文件了

好了,找到debug或者release目录下的hello.exe执行吧,一个只带一个按钮的qt程序诞生了

当然,如果只从代码行数而论,最简单的qt程序应该是下面这个控制台程序

#include <QApplication> //包含QApplication头文件

// 注意要修改项目属性中的链接器/系统,设置为控制台程序
int main(int argc, char *argv[])  // 还是标准的main函数
{
 QApplication app(argc, argv, QApplication::Tty);  // 构造应用,同MFC中的WinApp
 printf("Hello world!/n");
 getchar();
 return 0;
}

不过初学者可能还是更喜欢那些花花绿绿的界面。
我们的Hello World完成了,说实话还是蛮酷的,不过我这个人比较懒,这么麻烦的编译过程还是要稍微简化一下才好,于是我写了一个qt.bat的批处理程序,里面只有四句话

qmake -project
qmake -t vcapp
qmake
nmake

这样,编译的过程就简化为:

打开Visual Studio .Net命令行
定位到d:/qt/study/hello目录下(这个目录只是个示例,你应该知道输入你自己的目录)
执行qt ,目的是执行qt.bat里的命令

虽然只生下3步了,但是我还是觉得麻烦,主要是定位目录比较烦,尽管命令行支持鼠标拖动定位的功能,但是不还是得敲个cd嘛,而且我还要记住必须用Visual Studio .Net命令行,而不是常用的cmd

看看Visual Studio .Net命令行程序的属性,也无非是以下的命令

%comspec% /k "D:/Program Files/Microsoft Visual Studio .NET/Common7/Tools/vsvars32.bat"

那么就直接写一个MFC的程序处理这些事情好了,核心代码只有以下几行

void CTestDlg::OnButton1()
{
 // TODO: Add your control notification handler code here
 UpdateData();
 CString strDir;
 m_Dir.GetWindowText(strDir);
 if (!strDir.IsEmpty())
 {
  SetCurrentDirectory(strDir);
  system("%comspec% /K /"D://Program Files//Microsoft Visual Studio .NET//Common7//Tools//qtex.bat/"");
 }
}

void CTestDlg::OnDropFiles(HDROP hDropInfo)
{
 // TODO: Add your message handler code here and/or call default
 char szFileName[512];
    int nFileCount = ::DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 512);  
    for (int i = 0; i < nFileCount; i++)  
    {  
  UINT nChars = ::DragQueryFile(hDropInfo, i, szFileName, 512);  
  CString str(szFileName, nChars);  
  m_Dir.SetWindowText(str);
    }  
    ::DragFinish(hDropInfo);
 
 CDialog::OnDropFiles(hDropInfo);
}

看出我的目的了吗?我做了一个简单的对话框程序,通过拖动的处理实现了qt目录的定位,然后点击编译按钮就实现了qt程序的编译处理,其实再简单一点连编译按钮都可以省略,直接拖动就编译算了,一步操作,这比较适合我的性格:),至于那个qtex.bat嘛,其实只不过是把vsvars32.bat复制了一份,改个名称,最后加上了qt.bat中的内容而已(当然也可以只加一行qt,直接调用qt.bat,还实现了复用,呵呵)

这篇文章确实比较浅,万事开头难嘛,关键是兴趣,能看到点东西是最好的,从这个意义上我,Hello World!几乎是所有语言学习的第一个例子也不是没有道理的

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
为了使更多的Qt初学者能尽快入门Qt,也为了QtQt Creator的快速普及,我们花费大量精力写出了这一系列教程。虽然教程的知识可能很浅显,虽然教程的语言可能不规范,但是它却被数十万网友所认可。我们会将这一系列教程一直写下去,它将涉及Qt的方方面面 一、Qt Creator的安装和hello world程序的编写 二、Qt Creator编写多窗口程序 三、Qt Creator登录对话框 四、Qt Creator添加菜单图标 五、Qt Creator布局管理器的使用 六、Qt Creator实现文本编辑 七、Qt Creator实现文本查找 八、Qt Creator实现状态栏显示 九、Qt Creator中鼠标键盘事件的处理实现自定义鼠标指针 十、Qt Creator中实现定时器和产生随机数 十一、Qt 2D绘图(一)绘制简单图形 十二、Qt 2D绘图(二)渐变填充 十三、Qt 2D绘图(三)绘制文字 十四、Qt 2D绘图(四)绘制路径 十五、Qt 2D绘图(五)显示图片 十六、Qt 2D绘图(六)坐标系统 十七、Qt 2D绘图(七)Qt坐标系统深入 十八、Qt 2D绘图(八)涂鸦板 十九、Qt 2D绘图(九)双缓冲绘图简介 二十、Qt 2D绘图(十)图形视图框架简介 二十一、Qt数据库(一)简介 二十二、Qt数据库(二)添加MySQL数据库驱动插件 二十三、Qt数据库(三)利用QSqlQuery类执行SQL语句(一) 二十四、Qt数据库(四)利用QSqlQuery类执行SQL语句(二) 二十五、Qt数据库(五)QSqlQueryModel 二十六、Qt数据库(六)QSqlTableModel 二十七、Qt数据库(七)QSqlRelationalTableModel 二十八、Qt数据库(八)XML(一) 二十九、Qt数据库(九)XML(二) 三十、Qt数据库(十)XML(三) 三十一、Qt 4.7.0及Qt Creator 2.0 beta版安装全程图解 三十二、第一个Qt Quick程序(QML程序) 三十三、体验QML演示程序 三十四、Qt Quick Designer介绍 三十五、QML组件 三十六、QML项目之Image和BorderImage 三十七、Flipable、Flickable和状态与动画 三十八、QML视图 三十九、QtDeclarative模块 四十、使用Nokia Qt SDK开发Symbian和Maemo终端软件 四十一、Qt网络(一)简介 四十二、Qt网络(二)HTTP编程 四十三、Qt网络(三)FTP(一) 四十四、Qt网络(四)FTP(二) 四十五、Qt网络(五)获取本机网络信息 四十六、Qt网络(六)UDP 四十七、Qt网络(七)TCP(一) 四十八、Qt网络(八)TCP(二)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值