亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tutorial2-06.html

?? Linux下Qt編程的電子書
?? HTML
?? 第 1 頁 / 共 2 頁
字號(hào):
                    m_elements[i].setProX( HORIZONTAL_BAR, proX );
                    m_elements[i].setProY( HORIZONTAL_BAR, proY );
</pre>
<p> 然后我們創(chuàng)建一個(gè)CanvasText條目,傳遞給它在元素矢量中這個(gè)元素的索引和所要使用的標(biāo)簽、字體和畫布。我們?cè)O(shè)置文本條目的顏色為用戶指定的顏色并且設(shè)置條目的x和y位置和畫布的寬高成比例。我們?cè)O(shè)置Z軸順序?yàn)?,這樣文本條目總是在條形(Z軸順序?yàn)?)的上面(前面)。我們調(diào)用show()函數(shù)在畫布上繪制文本條目,并且設(shè)置元素的相對(duì)x和y位置。
<p> <pre>                }
                y += proheight;
</pre>
<p> 在繪制完條形和可能存在的標(biāo)簽之后,我們給y增加一定比例的高度用來準(zhǔn)備繪制下一個(gè)元素。
<p> <pre>            }
        }
    }
</pre>
<p> <h2> <a href="qcanvastext.html">QCanvasText</a>的子類
</h2>
<a name="2"></a><p> (由<tt>canvastext.h</tt>展開。)
<p> 

<pre>    class CanvasText : public <a href="qcanvastext.html">QCanvasText</a>
    {
    public:
        enum { CANVAS_TEXT = 1100 };

        CanvasText( int index, QCanvas *canvas )
            : <a href="qcanvastext.html">QCanvasText</a>( canvas ), m_index( index ) {}
        CanvasText( int index, const <a href="qstring.html">QString</a>&amp; text, QCanvas *canvas )
            : <a href="qcanvastext.html">QCanvasText</a>( text, canvas ), m_index( index ) {}
        CanvasText( int index, const <a href="qstring.html">QString</a>&amp; text, QFont font, QCanvas *canvas )
            : <a href="qcanvastext.html">QCanvasText</a>( text, font, canvas ), m_index( index ) {}

        int index() const { return m_index; }
        void setIndex( int index ) { m_index = index; }

        int rtti() const { return CANVAS_TEXT; }

    private:
        int m_index;
    };
</pre>
<p> 我們的CanvasText子類是<a href="qcanvastext.html">QCanvasText</a>的一個(gè)非常簡單的特化。我們所做的一切只是添加一個(gè)私有成員<tt>m_index</tt>,它用來保存和這個(gè)文本相關(guān)的元素的元素矢量索引,并且提供為這個(gè)值提供一個(gè)讀和寫函數(shù)。
<p> <h2> <a href="qcanvasview.html">QCanvasView</a>的子類
</h2>
<a name="3"></a><p> (由<tt>canvasview.h</tt>展開。)
<p> 

<pre>    class CanvasView : public <a href="qcanvasview.html">QCanvasView</a>
    {
        <a href="metaobjects.html#Q_OBJECT">Q_OBJECT</a>
    public:
        CanvasView( <a href="qcanvas.html">QCanvas</a> *canvas, ElementVector *elements,
                    <a href="qwidget.html">QWidget</a>* parent = 0, const char* name = "canvas view",
                    WFlags f = 0 )
            : <a href="qcanvasview.html">QCanvasView</a>( canvas, parent, name, f ),
              m_elements( elements ) {}

    protected:
        void viewportResizeEvent( <a href="qresizeevent.html">QResizeEvent</a> *e );
        void contentsMousePressEvent( <a href="qmouseevent.html">QMouseEvent</a> *e );
        void contentsMouseMoveEvent( <a href="qmouseevent.html">QMouseEvent</a> *e );
        void contentsContextMenuEvent( <a href="qcontextmenuevent.html">QContextMenuEvent</a> *e );

    private:
        <a href="qcanvasitem.html">QCanvasItem</a> *m_movingItem;
        <a href="qpoint.html">QPoint</a> m_pos;
        ElementVector *m_elements;
    };
</pre>
<p> 我們需要繼承<a href="qcanvasview.html">QCanvasView</a>,這樣我們就能處理:
<ol type=1>
<li> 上下文菜單請(qǐng)求。
<li> 視窗重定義大小。
<li> 用戶拖拽標(biāo)簽到任意位置。
</ol>
<p> 為了支持這些,我們存儲(chǔ)一個(gè)到正在被移動(dòng)的畫布條目的指針和它的最終位置。我們也存儲(chǔ)一個(gè)到元素矢量的指針。
<p> <h3> 上下文菜單請(qǐng)求
</h3>
<a name="3-1"></a><p> (由<tt>canvasview.cpp</tt>展開。)
<p> 

<pre>    <a name="x2434"></a>void CanvasView::<a href="qscrollview.html#contentsContextMenuEvent">contentsContextMenuEvent</a>( <a href="qcontextmenuevent.html">QContextMenuEvent</a> * )
    {
    <a name="x2429"></a>    ((ChartForm*)<a href="qobject.html#parent">parent</a>())-&gt;optionsMenu-&gt;exec( QCursor::<a href="qcursor.html#pos">pos</a>() );
    }
</pre>
<p> 當(dāng)用戶調(diào)用一個(gè)上下文菜單(比如在絕大多數(shù)平臺(tái)通過右鍵點(diǎn)擊),我們把畫布視圖的父對(duì)象(是一個(gè)ChartForm)轉(zhuǎn)化為正確的類型,然后用exec()在光標(biāo)位置執(zhí)行選項(xiàng)菜單。
<p> <h3> 視窗重定義大小
</h3>
<a name="3-2"></a><p> <pre>    <a name="x2437"></a>void CanvasView::<a href="qscrollview.html#viewportResizeEvent">viewportResizeEvent</a>( <a href="qresizeevent.html">QResizeEvent</a> *e )
    {
    <a name="x2433"></a>    <a href="qcanvasview.html#canvas">canvas</a>()-&gt;resize( e-&gt;<a href="qresizeevent.html#size">size</a>().width(), e-&gt;<a href="qresizeevent.html#size">size</a>().height() );
        ((ChartForm*)<a href="qobject.html#parent">parent</a>())-&gt;drawElements();
    }
</pre>
<p> 為了改變大小我們簡單地改變花布的大小,畫布視圖就會(huì)呈現(xiàn)在視窗客戶端區(qū)域的寬高中,然后調(diào)用drawElements()函數(shù)來重新繪制圖表。因?yàn)閐rawElements()畫的每一件都和畫布的寬高有關(guān),所以圖表就會(huì)被正確地繪制。
<p> <h3> 拖拽標(biāo)簽到任意位置
</h3>
<a name="3-3"></a><p> 當(dāng)用戶想把標(biāo)簽拖拽到他們點(diǎn)擊的位置時(shí),就應(yīng)該拖拽它并在新的位置釋放它。
<p> <pre>    <a name="x2436"></a>void CanvasView::<a href="qscrollview.html#contentsMousePressEvent">contentsMousePressEvent</a>( <a href="qmouseevent.html">QMouseEvent</a> *e )
    {
    <a name="x2430"></a>    <a href="qcanvasitemlist.html">QCanvasItemList</a> list = <a href="qcanvasview.html#canvas">canvas</a>()-&gt;collisions( e-&gt;<a href="qmouseevent.html#pos">pos</a>() );
    <a name="x2439"></a><a name="x2438"></a>    for ( QCanvasItemList::iterator it = list.<a href="qvaluelist.html#begin">begin</a>(); it != list.<a href="qvaluelist.html#end">end</a>(); ++it )
            if ( (*it)-&gt;rtti() == CanvasText::CANVAS_TEXT ) {
                m_movingItem = *it;
                m_pos = e-&gt;<a href="qmouseevent.html#pos">pos</a>();
                return;
            }
        m_movingItem = 0;
    }
</pre>
<p> 當(dāng)用戶點(diǎn)擊鼠標(biāo)時(shí),我們創(chuàng)建一個(gè)鼠標(biāo)點(diǎn)擊“碰撞”(如果有的話)的畫布條目的列表。然后我們迭代這個(gè)列表并且如果我們發(fā)現(xiàn)一個(gè)<tt>CanvasText</tt>條目,我們就把它設(shè)置為移動(dòng)的條目并且記錄下它的位置。否則我們?cè)O(shè)置為不移動(dòng)條目。
<p> <pre>    <a name="x2435"></a>void CanvasView::<a href="qscrollview.html#contentsMouseMoveEvent">contentsMouseMoveEvent</a>( <a href="qmouseevent.html">QMouseEvent</a> *e )
    {
        if ( m_movingItem ) {
            <a href="qpoint.html">QPoint</a> offset = e-&gt;<a href="qmouseevent.html#pos">pos</a>() - m_pos;
    <a name="x2432"></a><a name="x2431"></a>        m_movingItem-&gt;moveBy( offset.<a href="qpoint.html#x">x</a>(), offset.<a href="qpoint.html#y">y</a>() );
            m_pos = e-&gt;<a href="qmouseevent.html#pos">pos</a>();
            ChartForm *form = (ChartForm*)<a href="qobject.html#parent">parent</a>();
            form-&gt;setChanged( true );
            int chartType = form-&gt;chartType();
            CanvasText *item = (CanvasText*)m_movingItem;
            int i = item-&gt;index();
            (*m_elements)[i].setProX( chartType, item-&gt;x() / canvas()-&gt;width() );
            (*m_elements)[i].setProY( chartType, item-&gt;y() / canvas()-&gt;height() );
            <a href="qcanvasview.html#canvas">canvas</a>()-&gt;update();
        }
    }
</pre>
<p> 當(dāng)用戶拖拽鼠標(biāo)的時(shí)候,移動(dòng)事件就產(chǎn)生了。如果那里是一個(gè)可移動(dòng)條目,我們從鼠標(biāo)最后的位置和可移動(dòng)條目原來的位置計(jì)算出位移。我們將新的位置記錄為最后的位置。因?yàn)閳D表現(xiàn)在改變了,所以我們調(diào)用setChanged(),這樣當(dāng)用戶試圖退出或者讀入已存在的圖表時(shí)或者創(chuàng)建新的圖表,就會(huì)被提示是否保存。我們也分別地更新當(dāng)前圖表類型的元素的x和y的比例位置為當(dāng)前x和y與寬和高的比例。我們知道要更新哪個(gè)元件因?yàn)楫?dāng)我們創(chuàng)建每個(gè)畫布文本條目的時(shí)候,我們傳給它一個(gè)這個(gè)元素所對(duì)應(yīng)的位置索引。我們繼承了<a href="qcanvastext.html">QCanvasText</a>,這樣我們就可以設(shè)置和讀取這個(gè)索引值。最后我們調(diào)用update()來重繪畫布。
<p> <center><table cellpadding="4" cellspacing="2" border="0">
<tr bgcolor="#f0f0f0">
<td valign="top"><a href="qcanvas.html">QCanvas</a>沒有任何視覺效果。為了看到畫布的內(nèi)容,你必須創(chuàng)建一個(gè)<a href="qcanvasview.html">QCanvasView</a>來呈現(xiàn)畫布。如果條目被show()顯示,它們就會(huì)出現(xiàn)在畫布視圖中,然后,只有當(dāng)<a href="qcanvas.html#update">QCanvas::update</a>()被調(diào)用的時(shí)候。默認(rèn)情況下QCanva的背景是白色,并且會(huì)在畫布上繪制默認(rèn)的形狀,比如<a href="qcanvasrectangle.html">QCanvasRectangle</a>、<a href="qcanvasellipse.html">QCanvasEllipse</a>等等,因?yàn)樗鼈儽话咨畛洌苑浅M扑]使用一個(gè)非白色的畫刷顏色!
</table></center>
<p> <p align=right>
<a href="tutorial2-05.html">&laquo; 實(shí)現(xiàn)圖形用戶界面</a> |
<a href="tutorial2.html">目錄</a> |
<a href="tutorial2-07.html">文件處理 &raquo;</a>
</p>
<p> 
<!-- eof -->
<p><address><hr><div align=center>
<table width=100% cellspacing=0 border=0><tr>
<td>Copyright &copy; 2002 
<a href="http://www.trolltech.com">Trolltech</a>
<td><a href="http://www.trolltech.com/trademarks.html">Trademarks</a>
<td><a href="zh_CN.html">譯者:Cavendish</a>
<td align=right><div align=right>Qt 3.0.5版</div>
</table></div></address></body>
</html>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线精品一区二区| 成人av动漫网站| 一区二区三区影院| 综合久久国产九一剧情麻豆| 亚洲国产经典视频| 久久精品亚洲国产奇米99| 久久久精品综合| 国产日韩欧美一区二区三区综合 | 亚洲综合清纯丝袜自拍| 亚洲人快播电影网| 一区二区三区中文在线| 亚瑟在线精品视频| 日韩国产成人精品| 国产一区二区不卡在线| 成人免费高清在线观看| 欧美一a一片一级一片| 欧美精品乱码久久久久久按摩 | 国产精品一区2区| 国产不卡视频在线播放| 91国偷自产一区二区三区观看 | 日本一区二区成人在线| 国产精品情趣视频| 亚洲国产日韩精品| 国内久久婷婷综合| 91黄视频在线| 久久久精品免费观看| 亚洲黄色免费电影| 麻豆传媒一区二区三区| 91香蕉视频黄| 亚洲精品在线电影| 亚洲精品国产无天堂网2021| 天天av天天翘天天综合网 | 91一区二区三区在线观看| 欧美日韩亚洲综合| 久久久久综合网| 亚洲成人激情社区| 丁香激情综合国产| 4438成人网| 亚洲精品成a人| 国产成人午夜视频| 欧美日韩国产片| 亚洲人成伊人成综合网小说| 国产专区欧美精品| 欧美日韩视频在线观看一区二区三区 | av资源站一区| 日韩一区二区三区在线视频| 欧美经典一区二区| 久久99日本精品| 欧美日韩国产在线播放网站| 国产精品久久久久久久久图文区 | 国产欧美va欧美不卡在线| 亚洲成人福利片| 美腿丝袜在线亚洲一区| 国产精品一区在线观看乱码| 国产欧美一区二区在线| 一区二区三区中文字幕电影| 国产乱码精品一区二区三区av| 99国内精品久久| 欧美激情一区三区| 国模一区二区三区白浆| 欧美日韩亚洲不卡| 亚洲一区二区三区小说| 一本一道综合狠狠老| 欧美国产丝袜视频| 国产69精品久久777的优势| 欧美mv日韩mv国产网站app| 午夜电影久久久| 欧美三级中文字幕在线观看| 亚洲精品乱码久久久久久| av资源网一区| 日韩伦理免费电影| 91视频免费播放| 国产精品午夜久久| 91丨porny丨首页| 亚洲精品va在线观看| 91美女片黄在线观看91美女| 中文字幕一区二| 99精品久久只有精品| 亚洲天堂av老司机| 91国产免费看| 婷婷久久综合九色综合伊人色| 欧美日韩久久不卡| 日韩不卡免费视频| 精品国产乱码久久久久久闺蜜| 久久丁香综合五月国产三级网站| 2021中文字幕一区亚洲| 高清成人在线观看| 亚洲色图都市小说| 欧美乱熟臀69xxxxxx| 精品一区二区影视| 亚洲国产经典视频| 色婷婷久久久综合中文字幕 | 国产一区二区在线看| 中文字幕av不卡| 91久久人澡人人添人人爽欧美| 亚洲一级二级在线| 日韩欧美精品三级| 懂色av中文字幕一区二区三区| 国产精品的网站| 欧美男男青年gay1069videost| 麻豆91免费观看| 亚洲欧洲99久久| 欧美精品自拍偷拍| 成人综合激情网| 天天影视网天天综合色在线播放| 精品动漫一区二区三区在线观看| 国产成人av网站| 午夜久久电影网| 亚洲国产成人在线| 欧洲一区二区三区在线| 国产精品系列在线观看| 午夜一区二区三区视频| 久久无码av三级| 欧美三区免费完整视频在线观看| 国产一区二区在线观看免费| 亚洲一区二区三区四区不卡| 国产性做久久久久久| 91搞黄在线观看| 国产成人免费av在线| 日韩精彩视频在线观看| 亚洲国产精品ⅴa在线观看| 日韩欧美中文字幕精品| 一本色道a无线码一区v| 精品写真视频在线观看| 午夜av区久久| 日韩一区有码在线| 国产性色一区二区| 日韩一区二区三区av| 91久久线看在观草草青青| 国产xxx精品视频大全| 日韩黄色在线观看| 樱花草国产18久久久久| 国产精品电影院| 国产亚洲女人久久久久毛片| 日韩欧美一级精品久久| 欧美肥妇bbw| 欧美日韩卡一卡二| 欧美三级欧美一级| 在线观看亚洲精品视频| av在线免费不卡| 成人国产精品免费观看视频| 国产黄人亚洲片| 国产成人精品在线看| 国产一区二区三区| 国内一区二区视频| 精彩视频一区二区| 国产在线一区观看| 国内精品自线一区二区三区视频| 蜜桃视频一区二区三区在线观看| 亚洲成人自拍一区| 日韩成人一区二区| 免费欧美在线视频| 精品亚洲成a人在线观看| 精久久久久久久久久久| 激情综合色丁香一区二区| 久久电影网站中文字幕| 国产成人午夜精品影院观看视频 | 欧美日韩在线播放| 在线一区二区三区做爰视频网站| 在线观看网站黄不卡| 在线观看亚洲专区| 51久久夜色精品国产麻豆| 日韩免费一区二区| 久久久午夜电影| 国产精品久久久久影院色老大| 国产精品美女久久久久久2018| 亚洲欧美视频在线观看| 亚洲国产成人91porn| 日韩精品成人一区二区三区| 奇米精品一区二区三区四区| 国产一区在线观看视频| 99精品视频中文字幕| 欧美性猛交xxxx黑人交| 日韩欧美国产综合在线一区二区三区| 欧美一级日韩一级| 久久免费电影网| 亚洲激情男女视频| 日产欧产美韩系列久久99| 国产一区二区三区香蕉| 99国产精品久久久久久久久久| 欧美日韩卡一卡二| 欧美mv日韩mv国产| 亚洲美女在线国产| 九一久久久久久| 99免费精品在线观看| 欧美一区二区精品在线| 国产精品久久久久精k8| 午夜精品一区二区三区三上悠亚| 国产乱码精品一区二区三区忘忧草| 一本到不卡精品视频在线观看| 色老综合老女人久久久| 精品国产91亚洲一区二区三区婷婷 | 日韩va欧美va亚洲va久久| 久久福利资源站| 91国产成人在线| 国产精品久久国产精麻豆99网站| 性做久久久久久| 99精品国产视频| 久久久国产午夜精品| 亚洲国产乱码最新视频|