單機(jī)版五子棋_第1頁
單機(jī)版五子棋_第2頁
單機(jī)版五子棋_第3頁
單機(jī)版五子棋_第4頁
單機(jī)版五子棋_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、單機(jī)版五子棋游戲介紹(歷史背景)五子棋是起源于中國古代的傳統(tǒng)黑白棋種之一?,F(xiàn)代五子棋日文稱之為“連珠”,英文稱之為“Renju” 、“Gobang”或“FIR”(Five in a Row 的縮寫),亦有“ 連五子”、“五子連”、“串珠” 、“五目”、“五目碰”、“五格”等多種稱謂。五子棋不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。五子棋既有現(xiàn)代休閑的明顯特征“短、平、快”,又有古典哲學(xué)的高深學(xué)問“陰陽易理”;它既有簡單易學(xué)的特性,為廣大人民群眾所喜聞樂見,又有深奧的技巧和高水平的國際性比賽;它的棋文化源淵流長,具有東方的神秘和西方的直觀;既有“場”的概念,亦有“點”的連接。它

2、是中西文化的交流點,是古今哲理的結(jié)晶。游戲介紹(玩法)行棋:一人流輪一著下于棋盤空點處?;谄澹阂蝗讼峦昶搴螅缧韪膭?,必須在對方行棋之前重行。勝負(fù):先把五枚或以上己棋相連成任何橫縱斜方向為勝。功能分析顯示棋盤顯示棋子重新開始悔棋輸贏判斷前臺實現(xiàn)在哪里畫?用什么畫?怎么畫?在哪里畫?QPaintDevice類是能夠進(jìn)行繪圖的對象的基類,QWidget,QPixmap,QPicture,QImage,以及QPrinter類繼承了QPaintEngine類的繪圖能力。比較QWidget是用戶界面的單元組成部分,它接收鼠標(biāo)、鍵盤和其它從窗口系統(tǒng)來的事件,并把它自己繪制在盤屏幕上。QImage類提供了與

3、硬件無關(guān)的圖像表示,它為直接操作像素提供優(yōu)化。Qpixmap是后臺顯示的圖像,它為在屏幕上顯示圖像提供優(yōu)化。QPrinter 類時在打印機(jī)上繪制的繪圖設(shè)備。QWidgetQWidget類是所有用戶界面對象的基類。通俗的來講,Qt基本上所有的UI類都是由QWidget繼承出來的。QWidget類有很多成員函數(shù),但一般不直接使用,而是通過子類繼承來使用其函數(shù)功能。如,QPushButton、QlistBox等都是它的子類。例子代碼class MyQWidget : public QWidgetpublic: MyQWidget(QWidget *parent = 0);private slots:

4、private:;MyQWidget:MyQWidget(QWidget *parent):QWidget(parent)this-setFixedSize(400,400);this-setWindowTitle(tr(MyQwidget!);動手小實驗實驗(一):自定義一個窗口部件,在這個窗口部件上添加一行標(biāo)簽用什么畫?要在繪圖設(shè)備(paint device,一般是一個控件)上開始繪制,我們只要創(chuàng)建一個QPainter,把繪圖設(shè)備指針傳給QPainter對象。例如: QPainter painter(this)繪圖工具使用QPainter的draw()函數(shù)我們可以繪制各種圖形。繪制的方式由

5、QPainter的設(shè)置決定。設(shè)置的一部分是從繪圖工具得到的,其他是初始化時的默認(rèn)值。三個主要的工具為:畫筆,刷子和字體。畫筆用來繪制直線和圖形的邊框。包含顏色,寬度,線型,角設(shè)置和連接設(shè)置。刷子是填充幾何圖形的方式。包含顏色,方式設(shè)置,也可以是一個位圖或者漸變色。字體用來繪制文本。字體的屬性很多,如字體名,字號等。這些設(shè)置隨時可以改變,可用QPen,QBrush,QFont對象調(diào)用setPen(),setBrush(),setFont()修改。Qpainter成員drawPoint(int a,int b)使用當(dāng)前畫筆在(x, y)一個單一點drawPoints ( constQPointAr

6、ray&a, intindex, intnpoints)使用當(dāng)前畫筆繪制一組點a。如果index為非零(默認(rèn)為0),只有從index開始的點被繪制。如果npoints為負(fù)數(shù)(默認(rèn)),從index開始剩余的所有點都被繪制。如果index為0或者正數(shù),則index個點被繪制。Qpainter成員(續(xù))drawLine(int a,int b,int c, int d)繪制在(a,b)和(c,d)兩點之間的直線drawLines(constQPointArray&a)繪制多條直線Qpainter成員(續(xù))drawPolyLine ( constQPointArray&a, intindex, int

7、npoints )繪制a中,從aindex開始(index默認(rèn)為0)的npoints個點確定的多邊形。如果npoints為1(默認(rèn)),直到數(shù)組的最后的所有點都被使用(也就是說a.size()-index條線確定的多邊形)。drawPolygon ( constQPointArray&a, boolwinding, intindex, intnpoints )在drawPolyline的基礎(chǔ)上,第一個點總是被連接到最后一個點上。多邊形被當(dāng)前brush()填充。winding的值不同,填充算法不同。Qpainter成員(續(xù))drawRect(int a,int b,int c,int d)繪制左上

8、角在(a,b)并且寬為c、高為d的矩形drawRoumdRect ( intx, inty, intw, inth, intxRnd, intyRnd)繪制左上角在(x, y)并且寬為w、高為h的圓角矩形。xRnd和yRnd參數(shù)指定了角有多圓。0構(gòu)成了直角,99是最圓。drawEllipse(int a,int b,int c,int d)繪制中心在(a + c/2, b + d/2)并且大小為(c, d)的橢圓Qpainter成員(續(xù))drawArc ( intx, inty, intw, inth, inta, intalen )繪制由矩形(x, y, w, h)確定的弧,開始角度為a,并

9、且弧長為alen。drawChord ( intx, inty, intw, inth, inta, intalen )繪制由矩形(x, y, w, h)確定的弦,開始角度為a,并且弧長為alen。drawPie ( intx, inty, intw, inth, inta, intalen )繪制由矩形(x, y, w, h)確定的餅圖,開始角度為a,并且弧長為alen。這個餅圖由當(dāng)前的brush()填充。Qpainter成員(續(xù))drawText ( constQPoint&p, constQString&, intpos, intlen,TextDirectiondir = Auto )

10、在點p從位置pos開始繪制文本那。如果len為-1,整個字符串被繪制。否則只是繪制開始的len個字符。文本的方向由dir確定。drawPath(QPainterPath path)實現(xiàn)圖形元素的構(gòu)造和復(fù)用;圖形狀只需創(chuàng)建一次,然后調(diào)用QPainter:drawPath()函數(shù)多次繪制。Qpainter成員(續(xù))drawPixmap ( intx, inty, constQPixmap&pixmap, intsx, int, intsw, intsh)通過把pixmap的一部分復(fù)制到繪制設(shè)備中,在(x, y)繪制一個像素映射。(x, y)指定了要被繪制的繪制設(shè)備的左上點。(sx, sy)指定了要

11、被繪制的pixmap中的左上點。默認(rèn)為(0, 0)。(sw, sh)指定了要被繪制的pixmap的大小。默認(rèn)(-1, -1),意思是一直到像素映射的右下。Qpainter成員(續(xù))setPen ( )設(shè)置繪圖工具畫筆的相關(guān)屬性Qpainter成員(續(xù))setBrush( )設(shè)置繪圖工具筆刷的相關(guān)屬性怎么畫?QPainter默認(rèn)只能在paintEvent里面調(diào)用,但是:在其他事件中繪制窗體,提示信息如下:QPainter:begin: Paint device returned engine = 0, type: 1繪制操作應(yīng)該在paintEvent中完成。paintEventVoid QWid

12、get:paintEvent ( QPaintEvent * )void MyWidget:paintEvent(QPaintEvent *event)QPainter painter(this);painter.drawLine();paintEvent(續(xù))paintEvent()是一個虛函數(shù)槽(slot),子類可以對父類的paintEvent進(jìn)行重寫。當(dāng)調(diào)用update(),repaint()的時候,paintEvent()會被調(diào)用,另外,當(dāng)界面有任何改變的時候,paintEvent()也會被調(diào)用,這種界面的改變包括界面從隱藏到顯示,界面尺寸改變,當(dāng)然還包括界面內(nèi)容改變的時候會被調(diào)用。u

13、pdate和repaint是一類的,需要重繪的對象主動去調(diào)用,然后重繪。update和repaint調(diào)用之后,都回去調(diào)用paintEvent()。repaintrepaint(),被調(diào)用之后,立即執(zhí)行重繪,因此repaint是最快的,緊急情況下需要立刻重繪的可以使用repaint()。但是調(diào)用repaint的函數(shù)不能放到paintEvent中調(diào)用。舉個例子:有一個繼承于QWidget的子類MyWidget,并在子類中對paintEvent進(jìn)行了重寫。我們在MyWidget:myrepaint()中調(diào)用repaint()。但是,myrepaint()又被重寫的paintEvent()調(diào)用。 這樣

14、調(diào)用repaint()的函數(shù)又被paintEvent()調(diào)用,由于repaint()是立即重繪,而且repaint()在調(diào)用paintEvent之前幾乎不做任何優(yōu)化操作,而是會造成死循環(huán),即:先調(diào)用repaint(),繼而調(diào)用paintEvent(),paintEvent()反過來有調(diào)用repaint().如此死循環(huán)。updateupdate()跟repaint()比較,update則更加有優(yōu)越性。update()調(diào)用之后并不是立即重繪,而是將重繪事件放入主消息循環(huán)中,由main的event loop來統(tǒng)一調(diào)度的(其實也是比較快的)。update在調(diào)用paintEvent之前,還做了很多優(yōu)化,

15、如果update被調(diào)用了很多次,最后這些update會合并到一個大的重繪事件加入到消息隊列,最后只有這個大的update被執(zhí)行一次。同時也避免了repaint()中所提到的死循環(huán)。因此,一般情況下,我們調(diào)用update就夠了,跟repaint()比起來,update是推薦使用的。(事件機(jī)制)小實驗實驗(二)1、在自定義的窗口部件中,畫一個大小為矩形,內(nèi)部顏色為黃色,邊框是黑色的painter-setBrush(QBrush(Qt:yellow,Qt:SolidPattern);painter-drawRect(100, 100, 200, 200);painter-setPen(QPen(Qt

16、:black, 1);/Set the painter BLACK小實驗2、思考:如何畫一個斜的矩形(2種)坐標(biāo)變換painter-translate(100,100);/以(100,100)作為坐標(biāo)原點 painter-rotate(30);/坐標(biāo)旋轉(zhuǎn)30度 painter-setBrush(QBrush(Qt:yellow,Qt:SolidPattern); painter-drawRect(0, 0, 100, 100); painter-setPen(QPen(Qt:black, 1);/Set the painter BLACK大實驗(一)經(jīng)過以上知識點的講解和部分實驗,基本掌握了簡

17、單繪圖,為了更好的掌握繪圖技術(shù),畫一個棋盤:大實驗棋盤:代碼分析首先,背景:painter-setBrush(QBrush(Qt:yellow,Qt:SolidPattern);/將筆刷設(shè)置成黃顏色painter-drawRect(0, 0, 256, 256);調(diào)用矩形函數(shù)畫背景接下來是畫棋盤:painter-setPen(QPen(Qt:black,1);/設(shè)置畫筆為黑色,寬度是1for(int i = 1; i drawLine(16,cubeWidth * (i), 240, cubeWidth * (i);/ painter-drawLine(cubeWidth * (i), 16,

18、 cubeWidth * (i), 240);代碼分析最后是5個圓點: painter-drawEllipse(16*4-3, 16*4-3, 6, 6);/利用畫圓函數(shù)帶入相應(yīng)參數(shù) painter-drawEllipse(240-16*3-3, 240-16*3-3, 6, 6); painter-drawEllipse(16*4-3, 240-16*3-3, 6, 6); painter-drawEllipse(240-16*3-3, 16*4-3, 6, 6); painter-drawEllipse(16*8-3, 16*8-3, 6, 6);如何在棋盤上畫棋子?1、通知QT畫棋子2、

19、告知QT棋子的位置mousePressEventvoid QWidget:mousePressEvent (QMouseEvent*event)virtual protected當(dāng)鼠標(biāo)鍵被按下時被調(diào)用。這個事件處理器可以在子類中被重新實現(xiàn)來接收這個窗口部件中的鼠標(biāo)按下事件。QMouseEventQMouseEventQMouseEvent類包含一個鼠標(biāo)事件的參數(shù)描述(包括鼠標(biāo)移動,按下按鈕,釋放按鈕等)。pos()獲取鼠標(biāo)事件發(fā)生的位置,返回QPoint類型。QPointQPointQPoint類定義了平面上的一個點。一個點由一個x坐標(biāo)和一個y坐標(biāo)確定。坐標(biāo)類型是一個32位整數(shù)。坐標(biāo)可以通過函

20、數(shù)x()和y()來訪問。獲取點坐標(biāo):首先通過QMouseEvent獲取事件發(fā)生位置(QPoint對象),再通過QPoint對象來獲取具體坐標(biāo)。小實驗做個試驗:在觸摸屏上點擊任何點,然后在終端上打印出該點的坐標(biāo)大實驗(二)棋子:點擊棋盤的某一個點,在該點上畫一個圓畫棋子思想和畫圓點一樣,只不過是比較大的圓點,例如(黑子):painter-setBrush(QBrush(Qt:black,Qt:SolidPattern);/設(shè)置黑色的筆刷painter-setPen(Qt:black);/設(shè)置黑色的畫筆painter-drawEllipse(abc-x)*16 - chessWidth / 2,

21、(abc-y)*16 - chessWidth / 2, chessWidth, chessWidth);/帶入棋子的大小參數(shù),和坐標(biāo)點棋子數(shù)據(jù)結(jié)構(gòu)struct CHESS struct CHESS *next; struct CHESS *last; int x;/橫坐標(biāo) int y;/縱坐標(biāo) int color;/顏色;基本過程:在界面上某個位置點擊之后,系統(tǒng)會自動調(diào)用mousePressEvent。其中具體涉及到的事件包括獲取坐標(biāo)點、添加數(shù)據(jù)鏈表、畫棋子。獲取坐標(biāo)點:QPoint point = event-pos();/獲取點擊位置int x = cubeWidth * qRound(

22、float(point.x() /cubeWidth); int y = cubeWidth * qRound(float(point.y() /cubeWidth); /以上兩步利用qRound函數(shù)獲取最近的那個棋盤點,并且從像素點轉(zhuǎn)換成了坐標(biāo)點添加數(shù)據(jù)鏈表if(pre=NULL)/判斷鏈表是不是空,插入第一個節(jié)點cur = (CHESS *)malloc(sizeof(CHESS);/為數(shù)據(jù)結(jié)構(gòu)分配內(nèi)存if(cur!=NULL)cur-x = point.x()/16;cur-y = point.y()/16;cur-next = NULL;cur-last = NULL;cur-colo

23、r = 0;/“0”表示黑色,“1”表示白色pre = cur;WorBcur-xcur-y = cur-color;while(node!=NULL)/判斷剛下的棋子是否已經(jīng)存在if(node-x=(point.x()/16) & node-y=(point.y()/16)i+;node = node-last; if(i=0)/確定剛下的棋子以前未有過cur = (CHESS *)malloc(sizeof(CHESS);if(cur!=NULL)cur-x = point.x()/16;cur-y = point.y()/16;cur-next = NULL;cur-last = pre

24、;if(pre-color!=0) cur-color = 0;else cur-color = 1;pre-next = cur;pre = cur;WorBcur-xcur-y = cur-color; 重新開局1、途徑?2、具體實現(xiàn)?QPushButtonQPushButton窗口部件提供了命令按鈕。推動(點擊)按鈕來命令計算機(jī)執(zhí)行一些操作,或者回答一個問題。典型的按鈕有確定(OK)、應(yīng)用(Apply)、撤銷(Cancel)、關(guān)閉(Close)、是(Yes)、否(No)和幫助(Help)。QPushButton *button = new QPushButton(Download)想要按

25、下按鈕之后就執(zhí)行相關(guān)的操作,就要將按鈕和相關(guān)操作進(jìn)行綁定,涉及到信號和槽的相關(guān)知識。信號與槽信號和槽機(jī)制是 QT 的核心機(jī)制,要精通 QT 編程就必須對信號和槽有所了解。信號和槽是一種高級接口,應(yīng)用于對象之間的通信,它是 QT 的核心特性,也是 QT 區(qū)別于其它工具包的重要地方。信號當(dāng)某個信號對其客戶或所有者發(fā)生的內(nèi)部狀態(tài)發(fā)生改變,信號被一個對象發(fā)射。只有 定義過這個信號的類及其派生類能夠發(fā)射這個信號。當(dāng)一個信號被發(fā)射時,與其相關(guān)聯(lián)的槽將被立刻執(zhí)行,就象一個正常的函數(shù)調(diào)用一樣。如果存在多個槽與某個信號相關(guān)聯(lián),那么,當(dāng)這個信號被發(fā)射時,這些槽將會一個接一個地 執(zhí)行,但是它們執(zhí)行的順序?qū)请S機(jī)的

26、、不確定的,我們不能人為地指定哪個先執(zhí)行、哪 個后執(zhí)行。信號的聲明是在頭文件中進(jìn)行的,QT 的 signals 關(guān)鍵字指出進(jìn)入了信號聲明區(qū),隨后即可 聲明自己的信號。例如,下面定義了三個信號:signals: void mySignal(); void mySignal(int x); void mySignalParam(int x,int y);槽槽是普通的 C+ 成員函數(shù),可以被正常調(diào)用,它們唯一的特殊性就是很多信號可以與其相關(guān)聯(lián)。當(dāng)與其關(guān)聯(lián)的信號被發(fā)射時,這個槽就會被調(diào)用。槽可以有參數(shù),但槽的參數(shù)不能有缺省值。既然槽是普通的成員函數(shù),因此與其它的函數(shù)一樣,它們也有存取權(quán)限。槽的存取權(quán)限

27、決定了誰能夠與其相關(guān)聯(lián)。同普通的 C+ 成員函數(shù)一樣,槽函數(shù)也分為三種類型,即 public slots、private slots 和 protected slots。public slots:在這個區(qū)內(nèi)聲明的槽意味著任何對象都可將信號與之相連接。這對于組件編程非常有用,你可以創(chuàng)建彼此互不了解的對象,將它們的信號與槽進(jìn)行連接以便信息能夠正確的傳遞。protected slots:在這個區(qū)內(nèi)聲明的槽意味著當(dāng)前類及其子類可以將信號與之相連接。這適用于那些槽,它們是類實現(xiàn)的一部分,但是其界面接口卻面向外部。private slots:在這個區(qū)內(nèi)聲明的槽意味著只有類自己可以將信號與之相連接。這適用于

28、聯(lián)系非常緊密的類。槽的聲明也是在頭文件中進(jìn)行的。例如,下面聲明了三個槽:public slots: void mySlot(); void mySlot(int x);void mySignalParam(int x,int y);信號與槽的關(guān)聯(lián)通過調(diào)用 QObject 對象的 connect 函數(shù)來將某個對象的信號與另外一個對象的槽函數(shù)相關(guān)聯(lián),這樣當(dāng)發(fā)射者發(fā)射信號時,接收者的槽函數(shù)將被調(diào)用。該函數(shù)的定義如下:bool QObject:connect ( const QObject * sender, const char * signal, const QObject * receiver,

29、 const char * member )例如,下面定義了兩個對象:標(biāo)簽對象 label 和滾動條對象 scroll,并將 valueChanged() 信號與標(biāo)簽對象的 setNum() 相關(guān)聯(lián),另外信號還攜帶了一個整形參數(shù),這樣標(biāo)簽總是顯示滾動條所處位置的值。QLabel *label = new QLabel; QScrollBar *scroll = new QScrollBar; QObject:connect( scroll,SIGNAL(valueChanged(int), label, SLOT(setNum(int) );元對象工具元對象編譯器 moc(meta objec

30、t compiler)對 C+ 文件中的類聲明進(jìn)行分析并產(chǎn)生用于初始化元對象的 C+ 代碼,元對象包含全部信號和槽的名字以及指向這些函數(shù)的指針。moc 讀 C+ 源文件,如果發(fā)現(xiàn)有 Q_OBJECT 宏聲明的類,它就會生成另外一個 C+ 源文件,這個新生成的文件中包含有該類的元對象代碼。例如,假設(shè)我們有一個頭文件 mysignal.h,在這個文件中包含有信號或槽的聲明,那么在編譯之前 moc 工具就會根據(jù)該文件自動生成一個名為 mysignal.moc.h 的 C+ 源文件并將其提交給編譯器。元對象代碼是 signal/slot 機(jī)制所必須的。用 moc 產(chǎn)生的 C+ 源文件必須與類實現(xiàn)一起進(jìn)

31、行編譯和連接,或者用 #include 語句將其包含到類的源文件中。moc 并不擴(kuò)展 #include 或者 #define 宏定義 , 它只是簡單的跳過所遇到的任何預(yù)處理指令。實驗自定義一個窗口,添加按鈕,按下按鈕之后,窗口自動關(guān)閉具體實現(xiàn)清空鏈表,釋放內(nèi)存while(node!=NULL)pre = pre-last;free(node);node = pre;for(int i=0;i16;i+)for(int j=0;jcolor;int a = node-x;int b = node-y;int count;int c1;c1 = 0;count = 1;while(b-count=

32、1)if(WorBab-count=color)count+;else break;/計算棋子上方相同顏色的個數(shù)c1 = count;count = 1;while(b+count=15)if(WorBab+count=color)count+;else break;/計算棋子下方相同顏色的個數(shù)c1 = c1 + count;/計算相鄰的同色棋子的個數(shù),由于再向上計算和向下計算的時候分別都將當(dāng)前棋子算在內(nèi)了(計算了兩次),所以最后比較的時候要判斷c1是否大于等于6大實驗最終效果圖附錄-QPainterPath用途:它是由一些圖形如曲線、矩形、橢圓組成的對象。主要的用途是,能保存已經(jīng)繪制好的圖形

33、。實現(xiàn)圖形元素的構(gòu)造和復(fù)用;圖形狀只需創(chuàng)建一次,然后調(diào)用QPainter:drawPath()函數(shù)多次繪制。painterpath可以加入閉合或不閉合的圖形(如:矩形、橢圓和曲線)。QPainterPath可用于填充,描邊,clipping(修剪)。QPainterPath(續(xù))使用方法:QPainterPath一旦創(chuàng)建,直線和曲線都可以被添加入path,通過lineTo(),arcTo(),cubicTo()和quadTo()函數(shù)。currentPosition()是最后一次繪制后的“結(jié)束點”(或初始點)。使用moveTo()移動currentPosition()而不會添加任何元素。move

34、To()隱含的開始一個新subpath,并且閉合前一個。 一個path添加到另一個path用connectPath()。它默認(rèn)是從原點(0,0)開始繪圖,可以使用moveTo()改變繪圖的開始位置。小實驗void Dialog:paintEvent(QPaintEvent *)QPainterPath path;path.addEllipse(100,200,50,50);/向path中添加圖形QPainter painter(this);painter.setPen(Qt: yellow);painter.setBrush(Qt:red);painter.drawPath(path);/繪制

35、前面創(chuàng)建的pathQPainterPath path2;path2.addEllipse(75,175,100,100);painter.setBrush(Qt:white);path2.addPath(path);/將前面的path添加到新創(chuàng)建的path中painter.drawPath(path2);效果圖QPointArrayQPointArray類是QPoint的數(shù)組。相關(guān)操作(例):創(chuàng)建一個含有(4,5),(6,7) ,(8,9)的數(shù)組。QPointArray a( 3 ); /聲明一個大小為3的數(shù)組a.putPoints( 0, 3, 4,5, 6,7, 8,9 ); /從a0開始

36、一次插入3個點(4,5)(6,7)(8,9)小實驗void XXXX:paintEvent(QPaintEvent *event) Qpainter painter(this);Q3PointArray a(5);a0 = Qpoint(50,50);a1 = Qpoint(100,100);a2 = Qpoint(50,100);a3 = Qpoint(100,50);a4 = Qpoint(200,100);painter.drawLines(a);TextDirectionQPainter:TextDirectionenumTextDirection Auto, RTL, LTR QPa

37、inter:AutoQPainter:RTL- 從右到左QPainter:LTR- 從左到右QPixmapQPixmap是專門為繪圖而生,當(dāng)需要繪制圖片時你需要使用QPixmap。void PainterWidget:paintEvent(QPaintEvent *event) QPixmap pixImg(XXX.jpg);QImage image(XXX.jpg);QPainter painter(this);painter.drawPixmap(0, 0, pixImg);painter.drawImage(0, 340, image);Qwidget成員窗口函數(shù) :show()、hid

38、e()、raise()、lower()、close()。 頂級窗口 :caption()、setCaption()、icon()、setIcon()、iconText()、setIconText()、isActiveWindow()、setActiveWindow()、showMinimized()、showMaximized()、showFullScreen()、showNormal()。 窗口內(nèi)容 :update()、repaint()、erase()、scroll()、updateMask()。 Qwidget成員(續(xù))幾何形狀 pos()、size()、rect()、x()、y()、w

39、idth()、height()、sizePolicy()、setSizePolicy()、sizeHint()、updateGeometry()、layout()、move()、resize()、setGeometry()、frameGeometry()、geometry()、childrenRect()、adjustSize()、mapFromGlobal()、mapFromParent()、mapToGlobal()、mapToParent()、maximumSize()、minimumSize()、sizeIncrement()、setMaximumSize()、setMinimumSi

40、ze()、setSizeIncrement()、setBaseSize()、setFixedSize()。 Qwidget成員(續(xù))模式 :isVisible()、isVisibleTo()、visibleRect()、isMinimized()、isDesktop()、isEnabled()、isEnabledTo()、isModal()、isPopup()、isTopLevel()、setEnabled()、hasMouseTracking()、setMouseTracking()、isUpdatesEnabled()、setUpdatesEnabled()。 觀感 :style()、setStyle()、cursor()、setCursor()、font()、setFont()、palette()、setPalette()、backgroundMode()、setBackgroundMode()、colorGroup()、fontMetrics()、fontInfo()。 Qwidget成員(續(xù))鍵盤焦點函數(shù) :isFocusEnabled()、setFocusPolicy()、focusPolicy()、hasFocus()、setFocus()、clearFocus()、setTabOrd

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論