上一周,学校的程序设计周,要做个小程序:四则运算的自测系统。程序很简单,如果认真写的话,我应该可以在两天内就可以搞定,不过想想程序设计周有整整两周时间,如果只是写这么一个简单的程序,真的是有点浪费了。于是琢磨着,要不弄个图形化界面,毕竟大一的程序设计,就是只写了一个控制台界面。现在都大三了,再写一个控制台界面,实在是太low点了。

      想法是很好,可是图形化界面咋整呢,思来想去。虽说python、java写图形化界面更简单些,奈何自己只对c/c++熟啊。。。。用C++写图形化界面,由于C没有图形的库,只能借助MFC或者QT了。MFC那玩意,很老了,比较难搞,相比之下,QT就比较友好了,于是果断选择了QT。

     接下来就是恶补QT啦。找了一门课程,看着评价不错,实际上看下来,也感觉不错

下面记录一下自己学习上的一点总结:

① 程序运行起来,动力是事件,而事件分为两类:点击和键盘输入。

② 由于事件的发生时间是不确定的,所以程序得不停地监听。

③ 写一个QT程序,要考虑两件事:1.界面怎么写(外观)2.怎么处理事件(功能)

④ QT的main函数一般都是:

#inlcude <QtGui/QApplication>

#inlcude "dialog.h"

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

{

    QApplication a (argc,argv);          //创建一个名叫a的
    
    Dialog w;            //创建一个名叫w的对话框

    w.show();            //显示这个对话框

    return a.exec();        //进入消息循环

}

return a.exec()这句使程序进入消息循环,等待可能输入进行响应。这里main()把控制权转交给Qt,Qt完成事件处理工作,当应用程序退出的时候exec()的值就会返回。在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。

⑤ 在QT中,一个窗口就对应一个类,每一个窗口的显示都是一个类的实例运行。而每个窗口对应三个文件:xx.h、xx.cpp、xx.ui。

xx.ui是窗口的ui文件,用于设置窗口的外观,xx.h是窗口的头文件,用于存放类的声明,函数的声明,xx.cpp包含xx.h头文件,用于存放类的实现定义,函数的实现。

⑥ QT采用MVC模式,M是model,管理数据,V是view,管理视图外观,C是controller,管理功能。

⑦ QT的ui是一个大的类,存在层层的继承关系,以按钮为例,一个按钮是QPushButton类的一个实例对象,而QPushButton类继承于QAbstractButton类,QAbstractButton类继承于Qwidget类,Qwidget类继承于QObject类。

⑧  任何可见的属性都是继承于QWidget类。要找一个控件的属性,首先先考虑这个属性是不是很多控件都有的(例如控件大小这一类公共属性),还是这个独有的(例如lebel控件的显示文字等这样控件独有的属性)。一般对于控件独有的属性,一般是从底层往上找。

⑨ 每一个控件都有一个名字,用于与功能函数进行交互。

⑩ 一般如果运行结果的界面与自己设计的预期相差很大时,都是某个控件的垂直(水平)策略不当造成的,一般都设定为fixed。

⑪整个窗口也有布局规则,默认是关闭的,可以先把一些控件组合起来(设定布局规则),然后把这些组合起来的部分再进行组合(通过设置整个窗口的布局来实现)。