freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

qt嵌入式圖形開(kāi)發(fā)(入門(mén)篇)-在線(xiàn)瀏覽

2025-05-25 06:33本頁(yè)面
  

【正文】 , SLOT(quit()) )。信號(hào)與插槽的實(shí)現(xiàn)擴(kuò)展了C++的語(yǔ)法,同時(shí)也完全利用了C++面向?qū)ο蟮奶卣鳌?.2.1 信號(hào)與插槽的例子如果一個(gè)類(lèi)要使用信號(hào)與插槽機(jī)制,它就必須是從QObject或者QObject的子類(lèi)繼承,而且在類(lèi)的定義中必須加上Q_OBJECT宏。下面定義一個(gè)使用到信號(hào)與插槽機(jī)制的類(lèi)。 } int balance() const { return curBalance。 signals: void balanceChanged( int newBalance )。 }。這個(gè)類(lèi)有一個(gè)信號(hào)balanceChanged(),這個(gè)信號(hào)聲明了它在BankAccount類(lèi)的成員curBalance的值被改變時(shí)產(chǎn)生。 上面用來(lái)設(shè)置值的函數(shù)setBalance( int newBalance )定義在類(lèi)的“public slots”部分,因此它是一個(gè)插槽。下面就是該插槽函數(shù)setBalance( int newBalance )的實(shí)現(xiàn)代碼:void BankAccount::setBalance( int newBalance ) { if ( newBalance != curBalance ) { curBalance = newBalance。 } } 其中的一段代碼 emit balanceChanged( curBalance )。對(duì)于關(guān)鍵詞“emit”,它和信號(hào)、插槽一樣是由Qt 提供的,這些關(guān)鍵詞都會(huì)被c++的預(yù)處理機(jī)制轉(zhuǎn)換為c++代碼。當(dāng)信號(hào)和插槽被連接起來(lái)時(shí),應(yīng)當(dāng)確保它們的參數(shù)類(lèi)型是相同的,如果插槽的參數(shù)個(gè)數(shù)小于和它連接在一起的信號(hào)的參數(shù)個(gè)數(shù),那么從信號(hào)傳遞插槽的多余的參數(shù)將被忽略。 moc 讀取應(yīng)用程序的頭文件,并產(chǎn)生支持信號(hào)與插槽的必要的代碼。除了可以處理信號(hào)與插槽機(jī)制之外,moc還支持翻譯機(jī)制,屬性系統(tǒng)和運(yùn)行時(shí)的信息。 窗體是Qwidget 類(lèi)或它子類(lèi)的實(shí)例,客戶(hù)自己的窗體類(lèi)需要從Qwidget 它的子類(lèi)繼承。Qt并未對(duì)一個(gè)窗體有什么限制,任何類(lèi)型的窗體可以是頂級(jí)窗體,任何類(lèi)型的窗體可以是別的窗體的子窗體。當(dāng)父窗體無(wú)效,隱藏或被刪除后,它的子窗體都會(huì)進(jìn)行同樣的動(dòng)作。Qt的文本呈現(xiàn)窗體可以使用HTML子集顯示一個(gè)多語(yǔ)言的寬文本。 QLabel *hello = new QLabel( font color=blueHello iQt/Embedded!/i/font, 0 )。helloshow()。} 2.3.2 通用窗體 下面是一些主要的Qt 窗體的截屏圖,這些窗體使用了窗口樣式。Qt提供了解決的辦法,例如QComboBox, QLineEdit 和 QspinBox 的字符輸入可以通過(guò)Qvalidator的子類(lèi)來(lái)進(jìn)行約束和有效性檢查。許多Qt創(chuàng)建的窗體能夠顯示圖像,例如按鈕,標(biāo)簽,菜單項(xiàng)等等。 2.3.3 畫(huà)布QCanvas 類(lèi)提供了一個(gè)高級(jí)的平面圖形編程接口,它可以處理大量的像線(xiàn)條、矩形、橢圓、文本、位圖、動(dòng)畫(huà)等這些畫(huà)布項(xiàng),畫(huà)布項(xiàng)可以較容易的做成交互式的(例如做成支持用戶(hù)移動(dòng)的)。Qcanvas可以更有效的支持沖突檢測(cè),它能夠列出一個(gè)指定區(qū)域里面的所有的畫(huà)布項(xiàng)。Qcanvas對(duì)象是由QcanvasView進(jìn)行繪制的,QcanvasView對(duì)象可以以不同的譯文、比例、旋轉(zhuǎn)角度,剪切方式去顯示同一個(gè)畫(huà)布。它也可用于制作快節(jié)奏的且有大量角色的平面游戲。下面是一個(gè)完整的源代碼例子,它示例了如何通過(guò)子類(lèi)化窗體,繪制一個(gè)模擬的時(shí)鐘。 圖十 模擬鐘窗體在 ,AnalogClock 以這樣地形式定義::include class AnalogClock : public QWidget { public: AnalogClock( QWidget *parent = 0, const char *name = 0 )。virtual void paintEvent( QPaintEvent *event )。 AnalogClock 類(lèi)繼承了Qwidget, 它有一個(gè)典型的窗體類(lèi)構(gòu)造函數(shù),這個(gè)函數(shù)有父窗口對(duì)象指針和名字指針兩個(gè)參數(shù)。paintEvent() 函數(shù)是從QWidget 繼承而來(lái)的并且當(dāng)窗體需要重畫(huà)時(shí)這個(gè)函數(shù)就會(huì)被調(diào)用。應(yīng)用對(duì)象以 重載父類(lèi)對(duì)象的虛擬函數(shù)events (QEvent objects) 的形式接收系統(tǒng)的事件。 include include include AnalogClock::AnalogClock( QWidget *parent, const char *name ) : QWidget( parent, name ){ startTimer( 12000 )。 } void AnalogClock::timerEvent( QTimerEvent * ) { update()。 QCOORD minuteHand[8] = { 1, 0, 0, 1, 1, 0, 0, 40 }。QPainter painter( this )。( black )。 i 12。( 30 )。( 30 * (() % 12) + () / 2 )。 ()。( 6 * () )。 ()。在 timerEvent()函數(shù)中, 通過(guò)調(diào)用QWidget的函數(shù)update()就可以告訴Qt,窗體需要立即重畫(huà),緊接著Qt就會(huì)產(chǎn)生一個(gè)繪制事件并且調(diào)用paintEvent()函數(shù)。Qpainter類(lèi)提供了一種統(tǒng)一的方式用于繪制窗體,位圖,矢量圖等,它提供了繪制點(diǎn),線(xiàn),橢圓,多邊形,弧,貝塞爾曲線(xiàn)等功能,一個(gè)Qpainter的坐標(biāo)系可以被轉(zhuǎn)變,縮放,旋轉(zhuǎn),和剪切,這樣對(duì)象就可以根據(jù)它在窗口或者窗體上的位置繪制出一個(gè)剪切的視圖。使用QPainter 的子類(lèi)QdirectPainter可以鎖定和直接訪(fǎng)問(wèn)幀緩沖區(qū)域。 include include int main( int argc, char **argv ) { QApplication app( argc, argv )。 ( clock )。return ()。一個(gè)主窗口包含了一組標(biāo)準(zhǔn)窗體的集合。主窗口允許??康奈恢糜许敳浚筮?,右邊和底部。主窗口的下方,也就是在底部的??课恢弥掠幸粋€(gè)狀態(tài)欄。提示工具和“這是什么”幫助按鈕以旁述的方式闡述了用戶(hù)接口的使用方法。典型的模板包含有菜單欄,工具欄,可能沒(méi)有狀態(tài)欄(在必要的情況下,可以用任務(wù)欄,標(biāo)題欄來(lái)顯示狀態(tài))2.3.6 菜單彈出式菜單QpopupMenu類(lèi)以垂直列表的方式顯示菜單項(xiàng),它可以是單個(gè)的(例如上下文相關(guān)菜單),可以以菜單欄的方式出現(xiàn),或者是別的彈出式菜單的子菜單出現(xiàn)。 下面是一個(gè)建立包含有New,Open和Exit菜單項(xiàng)的文件菜單的例子。 fileMenuinsertItem( amp。 fileMenuinsertItem( amp。 fileMenuinsertSeparator()。xit, qApp, SLOT(quit()), CTRL+Key_Q )。加速器(快捷鍵)很少在一個(gè)沒(méi)有鍵盤(pán)輸入的設(shè)備上使用,Qt/Embedded 的典型配置并未包含對(duì)加速器的支持。New”意思是在桌面機(jī)器上以“New”的方式顯示出來(lái),但是在嵌入式設(shè)備上,它只會(huì)顯示為“New”。Qt內(nèi)置的布局管理能夠自動(dòng)的調(diào)整菜單欄。通過(guò)子類(lèi)化QcustomMenuItem,我們可以建立客戶(hù)化外觀和功能的菜單項(xiàng)。切換工具欄按鈕具有開(kāi)、關(guān)的特征,其它的按鈕則執(zhí)行一個(gè)命令。如果你僅為按鈕指定了一個(gè)圖標(biāo),那么Qt會(huì)使用可視提示來(lái)表現(xiàn)按鈕不同的狀態(tài),例如按鈕失效時(shí)顯示灰色。2.3.8 旁述現(xiàn)代的應(yīng)用主要使用旁述的方式去解釋用戶(hù)接口的用法?!疤崾緳凇笔切〉模ǔJ屈S色的矩形,當(dāng)鼠標(biāo)在窗體的一些位置游動(dòng)時(shí)它就會(huì)自動(dòng)出現(xiàn)。下面就是如何設(shè)置一個(gè)“存盤(pán)”按鈕的提示的代碼。 當(dāng)提示字符出現(xiàn)之后,你還可以在狀態(tài)欄顯示更詳細(xì)的文字說(shuō)明。對(duì)于這些設(shè)備也許就需要使用“這是什么”幫助按鈕,或者使用一種姿態(tài)來(lái)表示輸入設(shè)備正在進(jìn)行游動(dòng),例如用按下或者握住的姿態(tài)來(lái)表示現(xiàn)在正在進(jìn)行游動(dòng)。在小屏幕設(shè)備上,要想點(diǎn)擊“這是什么”幫助按鈕,具體的方法是,在靠近應(yīng)用的X 窗口的關(guān)閉按鈕“x”附近你會(huì)看到一個(gè)“?”符號(hào)的小按鈕,這個(gè)按鈕就是“這是什么”幫助按鈕。下面是設(shè)置一個(gè)存盤(pán)按鈕的“這是什么”文本提示信息的方法: QWhatsThis::add( saveButton, Saves the current file. )。Qtopia并未使用上述提及的兩種幫助(旁述)機(jī)制。Qtopia使用按下和握住的姿
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1