版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第三部分 Qt編程基礎(chǔ)(上) Qt核心類 Qt常用的控件 Qt的繪圖Qt中3個主要的基類1.QObject QObject類是所有能夠處理signal,slot和時間的Qt對象的基類2.QApplication QApplication類負(fù)責(zé)GUI應(yīng)用程序的的控制流和主要的設(shè)置,它包含主事件循環(huán)體,負(fù)責(zé)處理和調(diào)度所有來自窗口系統(tǒng)和其他資源的事件,并且處理應(yīng)用程序的開始,結(jié)束以及會話管理,還包括系統(tǒng)和應(yīng)用程序方面的設(shè)置。3.QWidget QWidget類是所有用戶接口對象的基類,它繼承QObject類的屬性。QObject類class Mandelbrot:public QObjectQ_OB
2、JECT /需要使用signal和slotpublic:Mandelbrot(QObect *parent=0, const char *name);public slots:void start();signals:void done();private slots:void calculate();private:QTimer timer;;/構(gòu)造初始化一個Mandelbrot對象Mandelbrot:Mandelbrot(QObject *parent=0, const char *name):QObject(parent, name)connect(&timer,SIGNAL(time
3、out(),SLOT(calculate();QT核心技術(shù):信號槽在Qt程序中,利用信號(signal)和插槽(slot)機制進行對象間的通信事件處理的方式也是回調(diào)當(dāng)對象狀態(tài)發(fā)生改變的時候,發(fā)出signal通知所有的slot接收signal,盡管它并不知道哪些函數(shù)定義了slot,而slot也同樣不知道要接收怎樣的signalsignal和slot機制真正實現(xiàn)了封裝的概念,slot除了接收signal之外和其它的成員函數(shù)沒有什么不同,而且signal和slot之間也不是一一對應(yīng)的。信號當(dāng)被觀察類內(nèi)部發(fā)生了觀察者感興趣的事件時,信號用來通知觀察者如: 一個QPushButton按鍵按下 一個異步處
4、理事件處理完成 QSlider值發(fā)生改變等信號是由元對象系統(tǒng)自動實現(xiàn)的成員函數(shù),開發(fā)者只需要申明信號函數(shù)即可。信號使用emit關(guān)鍵字發(fā)射如: emit clicked(); emit someSignal(7, “Hello”);信號的聲明是在頭文件中進行的,QT的signals關(guān)鍵字指出進入了信號聲明區(qū),隨后即可聲明自己的信號。例如,下面定義了三個信號:Q_OBJECTsignals:void mySignal();void mySignal(int x);void mySignalParam(int x,int y);從形式上講信號的聲明與普通的C+函數(shù)是一樣的,但是信號卻沒有函數(shù)體定義,
5、另外,信號的返回類型都是void,不要指望能從信號返回什么有用信息。信 號由moc自動產(chǎn)生,它們不應(yīng)該在.cpp文件中實現(xiàn)。槽槽是普通的C+成員函數(shù),可以被正常調(diào)用,它們唯一的特殊性就是很多信號可以與其相關(guān)聯(lián)。當(dāng)與其關(guān)聯(lián)的信號被發(fā)射時,這個槽就會被調(diào)用。槽可以有參數(shù), 但槽的參數(shù)不能有缺省值。槽的存取權(quán)限決定了誰能夠與其相關(guān)聯(lián)。同普通的C+成員函數(shù)一樣,槽函數(shù)也分為三種類型,即public slots、private slots和protected slots。槽的聲明也是在頭文件中進行的。例如,下面聲明了三個槽:public slots:void mySlot();void mySlot(i
6、nt x);void mySignalParam(int x,int y);信號和槽的實現(xiàn)class NewClass : public QObjectQ_OBJECT / Meta-object file needed/ Code convention recommends Q_OBJECT use always,/ otherwise qobject_cast failssignals:/ Implementation in the meta-objectvoid newSignal(int myInt, QString myString);public slots:/ Slots are
7、 implemented as normal member functionsvoid newSlot(int i, QString s);信號和槽的連接信號和槽必須連接后,才能使得槽能接收到相應(yīng)的信號 bool success = QObject:connect(senderObject, SIGNAL(valueChanged(int),observerObject, SLOT(display(int);信號與槽斷開連接signal和slot的斷開連接 斷開與一個對象的任何signal的任何連接 discount (myObject); 斷開與一個signal的任何連接 discount
8、(myObject, SIGNAL(mySignal(); 斷開一個指定的接受者 discount (myObject, 0,SIGNAL(mySignal(),0);Signal和Slot的連接方式QT編程 - QtCoreQtCore是Qt的心臟、所有的其它模塊都依賴它基本類型int, bool, double, char (C+數(shù)據(jù)類型)QString (string類型)QList (動態(tài)數(shù)組)QStringList (代替QList)其它核心類 QDate, QDateTime Can be compared, converted to strings QChar 16-bit Un
9、icode character QString Unicode character string. Can be resized, may contain 8-bit 0 terminating strings or binary data QByteArray - Used instead of QString, when memory conservation is important (Qt for embedded Linux) QEventLoop Used to enter and exit event loop QEvent Base class for all events i
10、n Qt其它核心類 QQueue Template class implementing a FIFO queue QPoint, QRect Rectangle is defined using the top left and bottom right QPoints QTimer One shot or periodic 1 ms timer (where applicable) QVariant Union of the common Qt types QVector Template class for dynamic arrays (flat), QLinkedList more
11、efficient, if many insertion and deletion operations needed Iterator classes Java (QVectorIterator) and STL-like (QVector:iterator) iterators existQT編程 - QtGuiWindows 一個widget就是一個窗口(除非其有父對象),Qt提供一個QMainWindow類,使用QDesigner設(shè)計界面。菜單QAction *actionNew = new QAction(MainWindow);actionNew-setObjectName(QSt
12、ring:fromUtf8(actionNew);QIcon icon;icon.addPixmap(QPixmap(QString:fromUtf8(:/:/images/images/file-16.png), QIcon:Normal, QIcon:Off);actionNew-setIcon(icon);menubar-addAction(menuFile-menuAction(); / QMenuBarmenuFile-addAction(actionNew); / QMenuQObject:connect(actionExit, SIGNAL(triggered(), MainWi
13、ndow,SLOT(close();工具欄QToolBar *fileToolBar;fileToolBar = new QToolBar(MainWindow);fileToolBar-setObjectName(QString:fromUtf8(fileToolBar);fileToolBar-addAction(actionOpen);對話框QInputDialog 單行輸入QMessageBox 消息顯示QProgressDialog 進度顯示QDialog 所有對話框的基類QColorDialogQFileDialogQFontDialog常用的控件(部件)主部件Qt繪圖在一個窗口畫
14、圖可以有不同的方法,最簡單的方法是直接在窗口中放入一幅位圖,這里不討論這種方式。另外一種是使用的基本的API函數(shù)進行畫線、畫點操作。繪圖工具的典型用法是: 構(gòu)造一個繪圖工具。 設(shè)置畫筆、畫刷等等。 繪制。 銷毀這個繪圖工具。 絕大多數(shù)情況下,所有這些是在一個繪制事件中完成的。(實際上,99的QPainter使用是在QWidget:paintEvent()的重新實現(xiàn)中,并且繪制工具已經(jīng)為這種用法高度優(yōu)化了。)這里是一個非常簡單的實例: void SimpleExampleWidget:paintEvent()QPainter paint( this );paint.setPen( Qt:blue
15、 );paint.drawText( rect(), AlignCenter, The Text );QPainter的核心功能是繪制,并且這里有最簡單的繪制函數(shù):drawPoint():繪制單一的一個點drawPoints():繪制一組點drawLine():繪制一條直線drawRect():繪制一個矩形drawWinFocusRect():繪制一個窗口焦點矩形drawRoundRect():繪制一個原形矩形drawEllipse():繪制一個橢圓drawArc():繪制一個弧drawPie():繪制一個餅圖drawChord():繪制一條弦drawLineSegments():繪制n條分隔線drawPolyline():繪制由n個點組成的多邊形drawPolygon():繪制由n個點組成的多邊形drawConvexPolygon():繪制由n個點組成的凸多邊形drawCubicBezier():繪制三次貝塞爾曲線所有這些函數(shù)使用整
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手房交易意向合同
- 三方合作合同范本
- 個人短期借款合同模板
- 中小學(xué)教師聘用合同模板一覽
- XX有限公司資產(chǎn)分割合同
- 個人借款保證合同模板
- 三方合作收款合同書
- 云端存儲服務(wù)系統(tǒng)使用合同
- 2025年房屋購買預(yù)約協(xié)議格式
- 產(chǎn)品銷售代理合同樣本
- 護理人文知識培訓(xùn)課件
- 建筑工程施工安全管理課件
- 2025年春新人教版數(shù)學(xué)七年級下冊教學(xué)課件 7.2.3 平行線的性質(zhì)(第1課時)
- 安徽省合肥市2025年高三第一次教學(xué)質(zhì)量檢測地理試題(含答案)
- 2025年新合同管理工作計劃
- 統(tǒng)編版八年級下冊語文第三單元名著導(dǎo)讀《經(jīng)典常談》閱讀指導(dǎo) 學(xué)案(含練習(xí)題及答案)
- 風(fēng)光儲儲能項目PCS艙、電池艙吊裝方案
- 《志愿軍-存亡之戰(zhàn)》觀后感小學(xué)生
- 統(tǒng)編小學(xué)《道德與法治》三年級上下冊教材的解讀
- 人教版(2024)英語七年級上冊單詞表
- 產(chǎn)業(yè)鏈競爭關(guān)聯(lián)度
評論
0/150
提交評論