一、QT介紹
QT是基於C++的跨平臺的用戶圖形界面開發框架
二、QT的安裝
1、Linux系統下
Ubuntu下的有線安裝與卸載
ubuntu包管理工具:apt-get install qt-sdk
CentOS包管理工具:yum install XXX
卸載:
apt-get purge qt-sdk
apt-get autoremove qt-sdk
安裝:
apt-get 下載下來的包在什麼地方?
/var/cache/apt/archives
apt-get install 下載源
/etc/apt/sources.list
Ubuntu下的無線安裝與卸載
兩種方式:
1、 獲取源代碼:編譯、安裝
2、 獲取安裝包。
apt-get download qt-sdk,僅僅只能下載這一個安裝包,大多數時候並不能安裝成功,軟件本身要依賴一些其他的軟件,所以我們要下載其他的依賴包。
進入安裝包目錄,安裝:
安裝:dpkg -i *.deb
卸載:
安裝的時候要求的是後綴名.deb的安裝包,卸載的時候不能通過安裝包卸載,要找到那個程序的名字進行卸載。
一般包以下劃線 _ 進行組織包名,一般第一個代表程序名稱。
awk命令介紹:
awk以行方式處理數據,默認以空格對行數據進行分割
ll | awk '{print $8}'
我們可以用-F這個參數來指定以什麼進行分割行數據
單個字符直接跟在F的後面:ll | awk -F: '{print $2}'
如果是字符串,則要單引號:ll | awk -F'4096' '{print $1}'
ll | awk '{print $NF}'; $NF代表最後一列
卸載:
for i in ls | awk -F_ '{print $1}'
; do dpkg -P $i;done
2、windows下安裝
網址:www.qt-project.org
三、QT實例
在沒有IDE的情況下,在Linux下可以使用以下方式創建qt
1、編寫源碼main.cpp
#include <QApplication>
#include <QWidget>
int main(int argc,char **argv)
{
QApplication app(argc,argv);
QWidget w;
w.show();
return app.exec();
}
2、生成一個工程管理文件:qmake -project
會生成一個XXX.pro文件
1、 生成Makefile文件:qmake
2、 生成可執行文件:make
如果僅僅這樣做,會出錯:怎麼解決???
在工程管理裏面加兩個庫:gui widgets;
##########################################################
# Automatically generated by qmake (3.0) ?? 4? 5 21:42:37 2017
##########################################################
TEMPLATE = app
TARGET = 01
INCLUDEPATH += .
# Input
SOURCES += main.cpp
QT += gui widgets
這句話是什麼意思呢,就是說這個QT程序要額外包含兩個庫,這兩個庫呢,一個叫gui,一個叫widgets。以前4.8的時候生成的工程文件自動將這兩個庫加進去,但是4.8以後爲了讓程序更加輕量級,有些庫就不會自動包含了,要手動包含。
只要更改工程文件Makefile文件會自動跟着變。
3、使用qmake命令生成Makefile
make以下就可以生成一個簡單的窗口。
四、在qtcreator編寫QT程序
1、在終端上輸入qtcreator命令打開qtcreator。
2、創建一個空的項目。
裏面只有一個工程管理文件
3、添加一個源文件main.cpp
工程文件會自動生成相應內容
4、編輯源文件,修改工程文件
在工程文件中添加 QT += gui widgets
5、編譯運行
點擊左下角三角形或者使用 Ctrl+R進行運行程序。
程序分析:
// 應用程序抽象類,抽象的是一個應用程序,表示一個應用程序
#include <QApplication>
// 窗口類,代表窗口
#include <QWidget>
int main(int argc, char **argv)
{
// 定義了一個應用程序對象 app, app就代表當前應用程序
QApplication app(argc, argv);
// 定義了一個窗口對象,代表一個窗口
QWidget w;
// 顯示窗口
w.show();
// 設置窗口標題
w.setWindowTitle("ABC");
// app的exec裏面有一個消息循環,死循環,處理消息(事件)
return app.exec();
}