Qt學(xué)習(xí)
Qt是什么
- Qt是一個(gè)跨平臺的C++圖形用戶界面庫灾票,通過變以來跨平臺,實(shí)現(xiàn)一個(gè)Qt支持Unix,Linux,windows,iOs,Andriod,Symbian
- 1991年由奇趣開發(fā)的跨平臺的C++圖形界面應(yīng)用程序開發(fā)框架恤煞。既可以開發(fā)GUI程式,也可用于開發(fā)非GUI程式施籍,如控制臺工具和服務(wù)器居扒。Qt是面向?qū)ο笳Z言,易于擴(kuò)展丑慎,并且允許組件編程苔货。
- 08年被Nokia收購
- 12年出售給Digia
不同平臺的比較
- Windows的界面GUI采用和虛擬硬件直連,反應(yīng)速度較快立哑,但不能像Linux那樣可以換不同的GUI夜惭。蘋果也是類似的。
- Linux和Unix的圖形界面完全在用戶態(tài)
Qt的安裝
- 安裝g++:sudo apt-get install g++铛绰,安裝完成請忽略诈茧。
- 進(jìn)入官網(wǎng)下載安裝包:https://www.qt.io/download-open-source/#section-2
-
在此選擇的是:
Paste_Image.png - 進(jìn)入存放的文件夾中,對./run的執(zhí)行權(quán)限進(jìn)行修改:chmod +x qt+xxxx.run
- 運(yùn)行程序:./qt+xxx.run
- 進(jìn)入安裝界面
Paste_Image.png
推薦安裝在家目錄下
-
配置Qt:在終端下輸入qmake查看是否報(bào)錯(cuò),順著它的報(bào)錯(cuò)捂掰,進(jìn)入/usr/lib/x86_64-linux-gnu/qt-default/qtchooser下敢会。
Paste_Image.png
- default.conf文件是要在管理員權(quán)限下修改,否則無法更改这嚣。sudo su
- 模仿下列路徑修改
Paste_Image.png
- 編譯出現(xiàn)問題
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 這個(gè)是幫助文檔
- qt4-qtconfig Qt的配置工具,這個(gè)裝好默認(rèn)好
- qt4-demos 官方的一些Demo
- Qt-designer可視化窗體設(shè)置工具
- 安裝Qt Creator
- 從Qt官方網(wǎng)站上直接下載安裝Qt Creator,網(wǎng)址為:http://qt.nokia.com/downloads
- qt-creator-linux-x86-opensource-2.8.0run(安裝包),因?yàn)槠鋵傩圆豢蓤?zhí)行(可用ls -l命令查看),所以要加上可執(zhí)行屬性(可用chmod命令設(shè)置)
- 下載完畢后,直接在終端運(yùn)行安裝包 qt-creator-linux-x86-opensourse 2.8.0run(可用/命令運(yùn)行)或者,sudo apt-get install qtcreator
課堂學(xué)習(xí)
- 在ui界面下鸥昏,設(shè)計(jì)時(shí)可以直接拖入按鈕。
- 實(shí)際上是使用Q類產(chǎn)生對象姐帚,并且可以對屬性進(jìn)行修改吏垮。
- 信號
signals void aSignal();
- 信號總是返回空
- 信號只有聲明沒有實(shí)現(xiàn)
- 信號可以關(guān)聯(lián)到任意數(shù)量的槽上
- 通產(chǎn)生一個(gè)直接調(diào)用,但是可以在線程之間作為事件來傳遞。甚至可以用在套接字之間
- 槽能以任意次序被激發(fā)
- 信號使用emit關(guān)鍵字發(fā)射出去
emit aSignal();
- 槽
- 槽在類中的定義
public slots: void aPublicSlot(); protected slots: void aProtectedSlot(); private slots: void aPrivateSlot();
- 槽就是普通成員函數(shù)膳汪,所以他們的訪問權(quán)限同普通成員函數(shù)一樣唯蝶。一個(gè)槽的訪問權(quán)限決定了誰可以和他相連。
- public slots:包含了任何信號都可以相連的槽
- protected slots:包含了之后這個(gè)類和它的子類的信號才能連接的槽
- private slots:包含了之后這個(gè)類本身的信號可以連接的槽
- 槽可以返回值遗嗽,但并不是通過連接
- 任意數(shù)量的信號可以關(guān)聯(lián)一個(gè)槽
connect(src, SIGNAL(sig()), dest, SLOT(slt()));
- 他以一個(gè)普通的函數(shù)實(shí)現(xiàn)
- 他可以作為普通函數(shù)被調(diào)用
- 信號和槽的區(qū)別:
- 回調(diào)和槽都可以讓對方互相關(guān)聯(lián)
- 回調(diào)callback是一個(gè)函數(shù)指針粘我,當(dāng)一個(gè)事件發(fā)生的時(shí)候被調(diào)用,任何函數(shù)都會(huì)被安排為回調(diào)
- 按下close按鈕關(guān)閉窗口
- 窗口是一個(gè)MainWindow對象痹换, 按鈕是一個(gè)button對象
- 當(dāng)鼠標(biāo)點(diǎn)擊按動(dòng)button時(shí)征字, button發(fā)出了一個(gè)clicked的信號
- 你把這個(gè)clicked信號和窗口MainWindow的一個(gè)close()接口進(jìn)行的關(guān)聯(lián)。
- 則等同于一點(diǎn)按鈕娇豫,就調(diào)用了MainWindow的close()柔纵,所以窗口關(guān)閉
- connect()函數(shù)說明
作用:把從sender對象發(fā)送的signal和receiver對象中的member連接起來。
說明時(shí)必須要調(diào)用SIGNAL()和SLOT()兩個(gè)宏
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 - 按下將文本框中的數(shù)值打印出來
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