工作的坏消息

2016/07/28 同学准备离职!!!

Posted by WangXiaoDong on July 28, 2016

时间:2016年7月28日 天气:晴转阴:sunny:—>:partly_sunny:


Author:冬之晓:disappointed:
Email: 347916416@qq.com
MyAppearance: MyAppearance

    今天早晨,江威告诉我,昨天听他寝室的舍友说,这边的公司不好,而且保证
的住房补贴估计也拿不到,就是拿到也是要呆够五年才行。所以他今天就一直心情不好,
准备要离职。特别是晚上,他说这边没有什么他能干的,而且他们部门的经理也不要他了
,让他看看能不能到其他部门。我听了以后,也很难受,因为当时是他让我过来的,否则
我肯定去北京找工作了。现在后悔也晚了,决定先要把这边的东西好好做做,多提高
能力,以后再作打算吧。

这两天看命令行有点腻了,今天决定放松一下心情,复习一下Qt的pro文件的生成规则! C++是我最熟悉的编程语言,而其本身却对界面开发比较无奈,因此就需要Qt这样流行的界面库来开发界面。 Qt开发界面的第一步是需要了解pro文件。

pro文件简介

pro文件是由Qt专门为了生成Makefile文件的一种文件,可以由qmake来编译。其目的是列举工程中包含的源文件。相比于自己写Makefile文件,pro文件语法简明,容易学习!
工程文件主要分为三种:app(单独的应用程序)、lib(静态和动态库)和subdirs(递归编译)。工程文件可以使用TEMPLATE变量指定:
TEMPLATE = lib
subdirs模板可以用来编译子目录里的目标文件。在这种情况下,除TEMPLATE =subdirs外,还需要指定SUBDIRS变量。在每个子目录中,qmake会搜索一目录名命名的.pro文件,并且会编译该工程。
如果没有TEMPLATE这一项,那么默认工程是app。对于app或者lib工程,最常使用的变量有下面这些:

  • HEADERS指定工程的C++头文件(.h)
  • SOURCES指定工程的C++实现文件(.cpp)
  • FORMS指定需要uic处理的由Qt设计师生成的.ui文件
  • RESOURCES指定需要rcc处理的.qrc文件
  • DEFINES指定预定义的C++预处理器符号
  • INCLUDEPATH指定C++编译器搜索全局文件的路径
  • LIBS指定工程要链接的库。库既可以通过绝对路径指定,也可以使用源自Unix的-L-l标识符来指定
  • CONFIG指定各种用于工程配置和编译的参数
  • QT指定工程所要使用的Qt模块(默认的是core gui,对应于QtCore和QtGui模块)
  • VERSION指定目标库的版本号
  • TARGET指定可执行文件或者库的基本文件名,其中不包括任何的扩展、前缀或版本号。(默认的是当前的目录名。)
  • DESTDIR指定可执行文件放置的目录。(默认值是平台相关的。例如,在Linux上,值当前目录;在Windows上,则是指debug或者release子目录)
  • DLLDESTDIR指定目标库文件放置的目录。(默认路径与DESTDIR相同)

CONFIG变量用来控制编译过程中的各个方面。它支持下面这些参数:

  • debug是指编译具有调试信息的可执行文件或者库,链接Qt库的调试版
  • release是指编译不具有调试信息的可执行文件或者库,链接发行版的Qt库。同时指定debug和release,则debug有效。
  • warn_off会关闭大量的警告。默认情况下,警告的状态是打开的。
  • qt是指应用程序或者库使用Qt。这一选项是默认包括的。
  • dll是指动态编译库
  • staticlib是指静态编译库
  • plugin是指编译一个插件。插件总是动态库,因此这一参数暗指dll参数
  • console是指应用程序需要写控制台(使用cout,cerr,qWarning(),等)
  • app_bundle只适用于Mac OS X编译,是指可执行文件被放到束中,这是Mac OS X的默认情况
  • lib_bundle只适应于Mac OS X编译,指库被放到框架中

再熟悉了基本pro文件的写法后,就可以进行一些简单的编程了。当然还有一些pro文件的语法,以后有机会会继续提到的。先看一个简单的界面的例子。

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication app(argc,argv);
    QLabel *label = new QLabel("<h2><i>Hello</i>"
                               "<font color=red>World!</font></h2>");
    label->show();
    return app.exec();
}

将这个文件命名为main.cpp,然后在在同一个文件夹下面保存一个chapter1.pro文件,内容是:

QT += widgets
SOURCES += \
        main.cpp

然后就可以直接用命令行在此文件夹下面使用qmake工具生成Makefile文件:
qmake chapter1
然后可以使用make工具编译里面的程序,就得到可执行程序啦~
结果显示的是一个: chapter1

可以看出,图片里面甚至可以使用HTML语言来扩展里面的显示结果!Qt真是太好用了,真的非常喜欢Qt!