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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值