上一週,學校的程序設計周,要做個小程序:四則運算的自測系統。程序很簡單,如果認真寫的話,我應該可以在兩天內就可以搞定,不過想想程序設計周有整整兩週時間,如果只是寫這麼一個簡單的程序,真的是有點浪費了。於是琢磨着,要不弄個圖形化界面,畢竟大一的程序設計,就是隻寫了一個控制檯界面。現在都大三了,再寫一個控制檯界面,實在是太low點了。
想法是很好,可是圖形化界面咋整呢,思來想去。雖說python、java寫圖形化界面更簡單些,奈何自己只對c/c++熟啊。。。。用C++寫圖形化界面,由於C沒有圖形的庫,只能藉助MFC或者QT了。MFC那玩意,很老了,比較難搞,相比之下,QT就比較友好了,於是果斷選擇了QT。
接下來就是惡補QT啦。找了一門課程,看着評價不錯,實際上看下來,也感覺不錯,網址貼上,安利一下吧:https://study.163.com/course/courseMain.htm?courseId=1005069007
下面記錄一下自己學習上的一點總結:
① 程序運行起來,動力是事件,而事件分爲兩類:點擊和鍵盤輸入。
② 由於事件的發生時間是不確定的,所以程序得不停地監聽。
③ 寫一個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。