Qt學習
Qt是什么
- Qt是一個跨平臺的C++圖形用戶界面庫,通過變以來跨平臺,實現一個Qt支持Unix,Linux,windows,iOs,Andriod,Symbian
- 1991年由奇趣開發的跨平臺的C++圖形界面應用程序開發框架。既可以開發GUI程式,也可用于開發非GUI程式,如控制臺工具和服務器。Qt是面向對象語言,易于擴展,并且允許組件編程。
- 08年被Nokia收購
- 12年出售給Digia
不同平臺的比較
- Windows的界面GUI采用和虛擬硬件直連,反應速度較快,但不能像Linux那樣可以換不同的GUI。蘋果也是類似的。
- Linux和Unix的圖形界面完全在用戶態
Qt的安裝
- 安裝g++:sudo apt-get install g++,安裝完成請忽略。
- 進入官網下載安裝包:https://www.qt.io/download-open-source/#section-2
-
在此選擇的是:
Paste_Image.png - 進入存放的文件夾中,對./run的執行權限進行修改:chmod +x qt+xxxx.run
- 運行程序:./qt+xxx.run
- 進入安裝界面
Paste_Image.png
推薦安裝在家目錄下
-
配置Qt:在終端下輸入qmake查看是否報錯,順著它的報錯,進入/usr/lib/x86_64-linux-gnu/qt-default/qtchooser下。
Paste_Image.png
- default.conf文件是要在管理員權限下修改,否則無法更改。sudo su
- 模仿下列路徑修改
Paste_Image.png
- 編譯出現問題
Paste_Image.png
解決方案:
Paste_Image.png
Qt安裝方法2
安裝Qt及Qt Creator
- 在Terminal中輸入
sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
其中
- qt4-dev-tools中包含了Qt Assistant,Qt Linguist,Qt Creator
- qt4-doc 這個是幫助文檔
- qt4-qtconfig Qt的配置工具,這個裝好默認好
- qt4-demos 官方的一些Demo
- Qt-designer可視化窗體設置工具
- 安裝Qt Creator
- 從Qt官方網站上直接下載安裝Qt Creator,網址為:http://qt.nokia.com/downloads
- qt-creator-linux-x86-opensource-2.8.0run(安裝包),因為其屬性不可執行(可用ls -l命令查看),所以要加上可執行屬性(可用chmod命令設置)
- 下載完畢后,直接在終端運行安裝包 qt-creator-linux-x86-opensourse 2.8.0run(可用/命令運行)或者,sudo apt-get install qtcreator
課堂學習
- 在ui界面下,設計時可以直接拖入按鈕。
- 實際上是使用Q類產生對象,并且可以對屬性進行修改。
- 信號
signals void aSignal();
- 信號總是返回空
- 信號只有聲明沒有實現
- 信號可以關聯到任意數量的槽上
- 通產生一個直接調用,但是可以在線程之間作為事件來傳遞。甚至可以用在套接字之間
- 槽能以任意次序被激發
- 信號使用emit關鍵字發射出去
emit aSignal();
- 槽
- 槽在類中的定義
public slots: void aPublicSlot(); protected slots: void aProtectedSlot(); private slots: void aPrivateSlot();
- 槽就是普通成員函數,所以他們的訪問權限同普通成員函數一樣。一個槽的訪問權限決定了誰可以和他相連。
- public slots:包含了任何信號都可以相連的槽
- protected slots:包含了之后這個類和它的子類的信號才能連接的槽
- private slots:包含了之后這個類本身的信號可以連接的槽
- 槽可以返回值,但并不是通過連接
- 任意數量的信號可以關聯一個槽
connect(src, SIGNAL(sig()), dest, SLOT(slt()));
- 他以一個普通的函數實現
- 他可以作為普通函數被調用
- 信號和槽的區別:
- 回調和槽都可以讓對方互相關聯
- 回調callback是一個函數指針,當一個事件發生的時候被調用,任何函數都會被安排為回調
- 按下close按鈕關閉窗口
- 窗口是一個MainWindow對象, 按鈕是一個button對象
- 當鼠標點擊按動button時, button發出了一個clicked的信號
- 你把這個clicked信號和窗口MainWindow的一個close()接口進行的關聯。
- 則等同于一點按鈕,就調用了MainWindow的close(),所以窗口關閉
- connect()函數說明
作用:把從sender對象發送的signal和receiver對象中的member連接起來。
說明時必須要調用SIGNAL()和SLOT()兩個宏
mainwindow.h
private slots: void on_pushButton_clicked(); void hello();
- maiwindow.cpp
connect(ui->yyy,SIGNAL(clicked()),this,SLOT(hello())); void MainWindow::hello() { cout<<"hello world"<<endl; }
Paste_Image.pngu1->yyy->setText("yyyxxx");
Paste_Image.png - 按下將文本框中的數值打印出來
void MainWindow::on_pushButton_clicked()
{
qDebug()<<ui->lineEdit->text()<<endl;
}
Paste_Image.png
void MainWindow::on_pushButton_clicked()
{
qDebug()<<ui->lineEdit->text()<<endl;
qDebug()<<ui->lineEdit_2->text()<<endl;
}
Paste_Image.png