在那神奇的一天,发生了一件神奇的事情,那就是有一个大美女——我突然发现自己不知不觉,越来越喜欢在Linux系统下做开发了~于是开始认认真真学习Linux系统下开发~~~虽然说在IT的道路上我还是一只小小小小菜鸟,我最近的收获对高手来说犹如天边的一朵小浮云,但是对我来说,如同朝阳,带给我无穷的前进的动力。高手要多多悄悄指点我哦~
         除了熟悉VI编辑器以外,主要有三方面收获,Qt安装,Qt界面开发,以及C++开发算法,罗列如下,留个笔记,将来可以看看:
NO.1 Qt安装
         Linux系统下办法老多了,可以用apt-get获取安装包,也可以在系统自带的软件管理中心处搜索Qt并下载,好像这些是可以自动安装的。我呢,选择了从网上下载安装包、解压、编译。具体步骤如下:
1、  载下qt-x11-opensource-src-4.3.2.tar.gz
2、  解压。tar zxvf qt-x11-opensource-src-4.3.2.tar.gz,将解压以后的文件夹移动到/usr/local下,并更名为qt
3、  进入/usr/local/qt,运行 ./configure(中间征询意见的时候就yes);然后运行gmake,有的人是make,具体看上一步执行结果的提示;运行gmake install默认安装在/usr/local/Trolltech/Qt-4.3.2
4、  更改配置文件:在用户目录下,比如我的是/usr/venus,编辑配置文件,vi .bash_profile
添加如下内容:
    QTDIR=/usr/local/Trolltech/Qt-4.3.2

  PATH=$QTDIR/bin:$PATH

  MANPATH=$QTDIR/doc/man:$MANPATH

  LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

  export QTDIR PATH MANPATH LD_LIBRARY_PATH

                   保存后重启或者注销用户即可生效。
注意是.bash_profile,放.bashrc里传说会意外多添加路径,什么原因不晓得,我的是添加了两次……而自己在别的地方写bash文件(使用source xx.sh生效)的话好像只在当前terminal中有效。
5、  好吧,写个最简单的Qt程序来测试?大伙都迫不及待的想知道自己的成果有没有白费~ 不避俗,就用hello qt好咯:
        $vi hello.cpp

      #include <QApplication>

      #include <QLabel>

      int main(int argc, char *argv[])

      {

                QApplication app(argc, argv);

                QLabel label(“hello qt!”);

                label.show();

                return app.exec();

      }

        $qmake –project (生成.pro文件)

        $qmak xx.pro (根据pro文件生成Makefile文件,也可以只写qmake)

        $make (执行Makefile

        $./hello (执行可执行文件)

        OK ~唯一纠结的就是之前用的Qt3,头文件包含啥的全用小写,有些控件初始化的方式与Qt4不同,导致我折腾了好久才搞定…
 

NO.2 Qt界面开发

        要是界面简单呢,还可以自己手写,但是通常界面会复杂一点,这时候要用Qtdesigner工具设计界面了呢(就是各种拖控件咯~)。更重要的是用designer设计界面会更便于管理吧(也不晓得用XML保存界面是谁发明的,嗯,不错~)。步骤如下:

1)   $mkdir test

2)   $designer(或者 designer&,表示后台运行
3)   $vi testDialog.h

4)   $vi testDialog.cpp

5)   $vi main.cpp

6)   $qmake –project

7)   $qmake test.pro

8)   $make

9)   $./test

1) 创建工程文件夹

2) 运行designer,然后各种设计,保存在test文件夹,比如保存为head.ui;另外记住这个UI的object name,比如为

dlgName(记不住后面也可以查,比如,运行uic head.ui,控制台即可显示根据ui生成的头文件,从命名空间那里可以看到相应 UI的object name
3) 编辑类testDialog头文件,记得将ui加在私有变量(Ui::dlgName ui;另外要么namespace Uiclass  dlgName  ;},要么直接包含头文件,头文件的名称为ui_head.h。

4) 编辑testDialog实现文件,用ui.setupUi(this)添加Ui。有一点呢,我没想通:如果ui在声明的时候为指针(Ui::testDialog *ui),那么在构造函数中那块应该要初始化,不然在构造函数里ui->setupUi(this)的时候就是空指针,这没错吧?在QtCreator以及Linux终端编译的时候都没问题,在运行的时候出现段错误,那么这也没问题。那我就是不明白为什么在VS中可以运行,而且多次运行都没问题。如果是随机生成的,这这这……也太智能了吧?而且跟踪的时候发现ui每次指向的地址都一样又是为什么呢?另外析构函数中只用delete new过的东西,否则会出现错误,好纠结。不过大侠有句话说的对,一般不会有声明过却不new的……

5) 哎呀呀,这后面的过程以及代码就跟前面的hello qt差不多咯~

 
NO.3 C++算法开发

        这个主要需要注意的就是makefile编写咯,我有好几次都吃亏在那个预编译文件(一般为头文件名.h.gch),所以makefile中的clean把预编译文件也清除了。

        另外,我发现python在这时候好有用哦~~o(_)o ~最笨的验证算法就是自己一步步笔算,可是懒得笔算怎么办咧?如果是在windows系统下可以有计算器,可以有MATLAB帮忙,Linux系统下呢?有法宝python~默认安装了的,直接vi compute.pyimport math,各种繁琐计算公式一写,保存后运行python compute.py就可以看结果咯~跟用MATLAB一样,做梦都要笑醒!

        对对对,还有一个收获,就是现在用VI更顺手了,知道并应用了更多的命令,也算没有辜负大侠的期望啊~