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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? customlayout.html

?? QT3.0.5的幫助文檔的中文翻譯
?? HTML
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- /home/reggie/tmp/qt-3.0-reggie-5401/qt-win-commercial-3.0.5/doc/layout.doc:270 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Translator" content="Cavendish">
<meta name="Qt zh_CN Documents Website" content="http://www.qiliang.net/qt">
<title>寫你自己的布局管理器</title>
<style type="text/css"><!--
h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; font-family: "Times New Roman" }
--></style>
</head>
<body>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr bgcolor="#E5E5E5">
<td valign=center>
 <a href="index.html">
<font color="#004faf">主頁</font></a>
 | <a href="classes.html">
<font color="#004faf">所有的類</font></a>
 | <a href="mainclasses.html">
<font color="#004faf">主要的類</font></a>
 | <a href="annotated.html">
<font color="#004faf">注釋的類</font></a>
 | <a href="groups.html">
<font color="#004faf">分組的類</font></a>
 | <a href="functions.html">
<font color="#004faf">函數(shù)</font></a>
</td>
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table>
<h1 align=center>寫你自己的布局管理器</h1>

  
<p> 這里我們提供了一個詳細的例子。CardLayout類是從同名的Java布局管理器得到的靈感。它把項目(窗口部件或者嵌套的布局)布置到彼此的頂端,每個項目通過<a href="qlayout.html#spacing">QLayout::spacing</a>()偏移的。
<p> 要寫自己的布局類,你必須像下面這樣定義:
<ul>
<li> 一個用來存放被布局處理的項目的數(shù)據(jù)結(jié)構(gòu)。每一個項目就是一個<a href="qlayoutitem.html">QLayoutItem</a>。我們將在例子中使用一個<a href="qptrlist.html">QPtrList</a>。
<li> <a href="qlayout.html#addItem">addItem()</a>,如何向布局中添加一個項目。
<li> <a href="qlayout.html#setGeometry">setGeometry()</a>,如何構(gòu)成一個布局。
<li> <a href="qlayoutitem.html#sizeHint">sizeHint()</a>,布局優(yōu)先選用的大小。
<li> <a href="qlayout.html#iterator">iterator()</a>,如何迭代布局。
</ul>
<p> 在絕大多數(shù)情況下,你也需要實現(xiàn)<a href="qlayout.html#minimumSize">minimumSize</a>()。
<p> <h2> card.h
</h2>
<a name="1"></a><p> <pre>
#ifndef CARD_H
#define CARD_H

#include &lt;<a href="qlayout-h.html">qlayout.h</a>&gt;
#include &lt;<a href="qptrlist-h.html">qptrlist.h</a>&gt;

class CardLayout : public <a href="qlayout.html">QLayout</a>
{
public:
    CardLayout( <a href="qwidget.html">QWidget</a> *parent, int dist )
        : <a href="qlayout.html">QLayout</a>( parent, 0, dist ) { }
    CardLayout( <a href="qlayout.html">QLayout</a>* parent, int dist)
        : <a href="qlayout.html">QLayout</a>( parent, dist ) { }
    CardLayout( int dist )
        : <a href="qlayout.html">QLayout</a>( dist ) { }
    ~CardLayout();

    void addItem(QLayoutItem *item);
    <a href="qsize.html">QSize</a> sizeHint() const;
    <a href="qsize.html">QSize</a> minimumSize() const;
    <a href="qlayoutiterator.html">QLayoutIterator</a> iterator();
    void setGeometry(const <a href="qrect.html">QRect</a> &amp;rect);

private:
    <a href="qptrlist.html">QPtrList</a>&lt;QLayoutItem&gt; list;
};

#endif
</pre>
 
<p> <h3> card.cpp
</h3>
<a name="1-1"></a><p> <pre>
#include "card.h"
</pre>
 
<p> 首先我們?yōu)椴季侄x一個迭代。布局迭代被布局系統(tǒng)用作內(nèi)部處理圖形窗口部件刪除操作的。它們也可以被提供給應用程序員。
<p> 這里有兩個兩個不同的相關類:<a href="qlayoutiterator.html">QLayoutIterator</a>是一個可以提供給應用程序員可見的類,它是<a href="shclass.html#explicitly-shared">明確地被共享</a>。QLayoutIterator包括一個可以做任何事情地<a href="qglayoutiterator.html">QGLayoutIterator</a>。我們必須生成一個知道如何迭代我們地布局類的QGLayoutIterator的子類。
<p> 在這種情況下,我們選擇一個簡單的實現(xiàn):我們把一個整數(shù)索引和指針存儲到一個列表中。每一個<a href="qglayoutiterator.html">QGLayoutIterator</a>的子類都必須實現(xiàn)<a href="qglayoutiterator.html#current">current</a>()、<a href="qglayoutiterator.html#next">next</a>()和<a href="qglayoutiterator.html#takeCurrent">takeCurrent</a>(),還有一個構(gòu)造函數(shù)。在我們的例子中我們不需要析構(gòu)函數(shù)。
<p> <pre>
class CardLayoutIterator : public <a href="qglayoutiterator.html">QGLayoutIterator</a>
{
public:
    CardLayoutIterator( <a href="qptrlist.html">QPtrList</a>&lt;QLayoutItem&gt; *l )
        : idx( 0 ), list( l ) { }

    <a href="qlayoutitem.html">QLayoutItem</a> *current()
    { return idx &lt; int(list-&gt;<a href="qptrlist.html#count">count</a>()) ? list-&gt;<a href="qptrlist.html#at">at</a>(idx) : 0;  }

    <a href="qlayoutitem.html">QLayoutItem</a> *next()
    { idx++; return current(); }

    <a href="qlayoutitem.html">QLayoutItem</a> *takeCurrent()
    { return list-&gt;<a href="qptrlist.html#take">take</a>( idx ); }

private:
    int idx;
    <a href="qptrlist.html">QPtrList</a>&lt;QLayoutItem&gt; *list;
};
</pre>
 
<p> 我們必須實現(xiàn)QLayout:iterator()返回一個這個布局的<a href="qlayoutiterator.html">QLayoutIterator</a>。
<p> <pre>
QLayoutIterator CardLayout::iterator()
{       
    return QLayoutIterator( new CardLayoutIterator(&amp;list) );
}
</pre>
 
<p> addItem()實現(xiàn)了布局項目的默認布置策略。它必須被實現(xiàn)。它被<a href="qlayout.html#add">QLayout::add</a>()使用,被把一個布局作為父布局的<a href="qlayout.html">QLayout</a>的構(gòu)造函數(shù)使用,并且它被用來實現(xiàn)<a href="qlayout.html#autoAdd">自動添加</a>這一特性。如果你的布局有需要參數(shù)的高級布置選項,你將必須提供像<a href="qgridlayout.html#addMultiCell">QGridLayout::addMultiCell</a>()一樣的額外的訪問函數(shù)。
<p> <pre>
void CardLayout::addItem( <a href="qlayoutitem.html">QLayoutItem</a> *item )
{
    list.append( item );
}
</pre>
 
<p> 布局對項目的增加負有責任。因為<a href="qlayoutitem.html">QLayoutItem</a>不繼承<a href="qobject.html">QObject</a>,我們必須人工地刪除這些項目。<a href="qlayout.html#deleteAllItems">QLayout::deleteAllItems</a>()函數(shù)使用我們前面定義的迭代來刪除布局中的所有項目。
<p> <pre>
CardLayout::~CardLayout()
{
    deleteAllItems();
}
</pre>
 
<p> setGeometry()函數(shù)實際上執(zhí)行了這個布局。作為參數(shù)提供的矩形不包括margin()。如果相關的話,項目之間的距離請使用spacing()。
<p> <pre>
void CardLayout::setGeometry( const <a href="qrect.html">QRect</a> &amp;rect )
{
    QLayout::<a href="qlayout.html#setGeometry">setGeometry</a>( rect );

    <a href="qptrlistiterator.html">QPtrListIterator</a>&lt;QLayoutItem&gt; it( list );
    if (it.<a href="qptrlistiterator.html#count">count</a>() == 0)
        return;

    <a href="qlayoutitem.html">QLayoutItem</a> *o;

    int i = 0;

    int w = rect.<a href="qrect.html#width">width</a>() - ( list.count() - 1 ) * spacing();
    int h = rect.<a href="qrect.html#height">height</a>() - ( list.count() - 1 ) * spacing();

    while ( (o = it.<a href="qptrlistiterator.html#current">current</a>()) != 0 ) {
        ++it;
        <a href="qrect.html">QRect</a> geom( rect.<a href="qrect.html#x">x</a>() + i * spacing(), rect.<a href="qrect.html#y">y</a>() + i * spacing(),
                    w, h );
        o-&gt;<a href="qlayoutitem.html#setGeometry">setGeometry</a>( geom );
        ++i;
    }
}
</pre>
 
<p> sizeHint()和minimumSize()通常情況下在實現(xiàn)中非常相似。這兩個函數(shù)返回的大小應該包括spacing(),但不包括margin()。
<p> <pre>
QSize CardLayout::sizeHint() const
{
    <a href="qsize.html">QSize</a> s( 0, 0 );
    int n = list.count();
    if ( n &gt; 0 )
        s = QSize( 100, 70 ); // start with a nice default size
    <a href="qptrlistiterator.html">QPtrListIterator</a>&lt;QLayoutItem&gt; it( list );
    <a href="qlayoutitem.html">QLayoutItem</a> *o;
    while ( (o = it.<a href="qptrlistiterator.html#current">current</a>()) != 0 ) {
        ++it;
        s = s.<a href="qsize.html#expandedTo">expandedTo</a>( o-&gt;<a href="qlayoutitem.html#minimumSize">minimumSize</a>() );
    }
    return s + n * QSize( spacing(), spacing() );
}

QSize CardLayout::minimumSize() const
{
    <a href="qsize.html">QSize</a> s( 0, 0 );
    int n = list.count();
    <a href="qptrlistiterator.html">QPtrListIterator</a>&lt;QLayoutItem&gt; it( list );
    <a href="qlayoutitem.html">QLayoutItem</a> *o;
    while ( (o = it.<a href="qptrlistiterator.html#current">current</a>()) != 0 ) {
        ++it;
        s = s.<a href="qsize.html#expandedTo">expandedTo</a>( o-&gt;<a href="qlayoutitem.html#minimumSize">minimumSize</a>() );
    }
    return s + n * QSize( spacing(), spacing() );
}
</pre>
 
<p> <h2> 更多的注釋
</h2>
<a name="2"></a><p> 這個布局沒有實現(xiàn)heightForWidth()。
<p> 我們忽略了<a href="qlayoutitem.html#isEmpty">QLayoutItem::isEmpty</a>(),這也就是說這個布局將會把隱藏的窗口部件顯示出來。
<p> 對于復雜的布局,通過存儲計算結(jié)果可以使速度得到很大的提高。在這種情況下,實現(xiàn)<a href="qlayoutitem.html#invalidate">QLayoutItem::invalidate</a>()來把被存儲的數(shù)據(jù)弄臟。
<p> 調(diào)用<a href="qlayoutitem.html#sizeHint">QLayoutItem::sizeHint</a>(),其它的也許更浪費時間,如果你在同一個函數(shù)中再一次稍晚的情況下需要這個值,你應該把它存儲成局部變量。
<p> 你不應該在同一個函數(shù)中對同一項目調(diào)用<a href="qlayoutitem.html#setGeometry">QLayoutItem::setGeometry</a>()兩次。如果這個項目有幾個子窗口部件的話,它會很浪費時間,因為它將不得不每次都執(zhí)行一個完整的布局。相反,計算幾何位置并且設置它。(這不僅僅是應用于布局,如果你實現(xiàn)了你自己的resizeEvent()你應該做同樣的事情。)
<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>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品无遮挡| 国产a精品视频| 久久精品国产999大香线蕉| 欧美日韩国产中文| 1024成人网| 国产999精品久久久久久| 在线不卡欧美精品一区二区三区| 亚洲人妖av一区二区| 精品中文字幕一区二区小辣椒 | 亚洲色欲色欲www| 石原莉奈在线亚洲三区| 国产一区二区0| 欧美一区二区日韩一区二区| 国产精品国产三级国产有无不卡| 尤物在线观看一区| 欧美日韩一级大片网址| 伊人色综合久久天天| 国产精品综合二区| 国产亚洲精品超碰| 在线一区二区三区四区| 中文字幕一区二区在线播放| 欧美高清视频不卡网| 亚洲福利视频三区| 欧美在线看片a免费观看| 激情综合色丁香一区二区| 一级精品视频在线观看宜春院| 国产欧美视频在线观看| 91精品国产91久久综合桃花| 欧美影视一区二区三区| 色欧美日韩亚洲| 色综合天天综合网天天看片| 高清av一区二区| 久久99九九99精品| 麻豆视频观看网址久久| 亚洲高清在线精品| 亚洲午夜视频在线| 亚洲国产aⅴ成人精品无吗| 亚洲欧洲制服丝袜| 一区二区三区四区在线播放 | 欧美一区二区视频在线观看| 日本乱码高清不卡字幕| 色婷婷久久久亚洲一区二区三区| 99在线精品一区二区三区| 99r精品视频| 91一区一区三区| 91啪在线观看| 色妹子一区二区| 色国产综合视频| 在线一区二区三区做爰视频网站| 色婷婷综合久久久久中文一区二区 | 欧美一区二区三区男人的天堂| 欧美情侣在线播放| 91精品国产91久久久久久一区二区 | 欧美美女一区二区在线观看| 欧美视频三区在线播放| 欧美三电影在线| 欧美日韩一区 二区 三区 久久精品| 欧美日韩日日骚| 日韩三级在线观看| 久久青草欧美一区二区三区| 国产欧美一区二区精品秋霞影院| 一区在线播放视频| 午夜电影网一区| 久久99深爱久久99精品| 国产69精品久久久久777| 色婷婷精品大在线视频| 欧美三级电影精品| 精品国产电影一区二区| 中文字幕精品一区二区精品绿巨人| 樱桃视频在线观看一区| 亚洲国产成人高清精品| 午夜精品免费在线| 国内精品免费**视频| voyeur盗摄精品| 欧美日韩一级片在线观看| 精品美女一区二区| 国产精品成人免费| 亚洲成av人**亚洲成av**| 美日韩黄色大片| av资源网一区| 在线观看91精品国产麻豆| 国产视频在线观看一区二区三区| 中文字幕在线免费不卡| 免费观看30秒视频久久| 丁香六月综合激情| 欧美视频日韩视频在线观看| 国产亚洲欧美激情| 亚洲第一在线综合网站| 国产主播一区二区| 欧美男生操女生| 国产精品欧美综合在线| 婷婷国产v国产偷v亚洲高清| 成人久久18免费网站麻豆 | 88在线观看91蜜桃国自产| 久久久久久久久蜜桃| 亚洲午夜一二三区视频| 国产伦精品一区二区三区免费迷| 在线免费观看日本欧美| 久久免费精品国产久精品久久久久| 一个色综合网站| 成人福利在线看| 日韩欧美国产wwwww| 亚洲一区二区偷拍精品| 懂色av一区二区三区免费观看| 这里是久久伊人| 亚洲免费在线观看| 国产一区二区三区综合| 69堂国产成人免费视频| 亚洲精品免费电影| 成人免费看的视频| 精品国产亚洲一区二区三区在线观看| 一区二区三区**美女毛片| 国产福利一区在线| 国产免费久久精品| 久久99精品视频| 欧美丰满美乳xxx高潮www| 亚洲精品视频在线观看免费| 国产91精品免费| 久久在线观看免费| 麻豆精品一区二区av白丝在线| 欧美性高清videossexo| 亚洲欧美电影院| 色婷婷综合久久久久中文 | 亚洲黄色尤物视频| 成人激情动漫在线观看| 久久精品在这里| 国产一区二区视频在线播放| 精品日韩在线观看| 老司机精品视频一区二区三区| 欧美日韩免费不卡视频一区二区三区| 亚洲精品亚洲人成人网在线播放| 91丝袜美腿高跟国产极品老师| 国产精品国产精品国产专区不蜜| 粉嫩一区二区三区在线看| 日本一区二区三区免费乱视频 | 99精品视频在线免费观看| 国产日韩影视精品| 国产福利精品导航| 国产亚洲综合av| 懂色中文一区二区在线播放| 国产日韩v精品一区二区| 国产精品2024| 国产精品久久久久影院老司| 99久久精品国产麻豆演员表| 亚洲色欲色欲www在线观看| 色综合久久88色综合天天免费| 一区二区三区久久| 欧美在线观看一区二区| 日本中文字幕一区| 日韩一级黄色片| 久久66热偷产精品| 国产亚洲精品aa| 91蝌蚪porny成人天涯| 亚洲一区二区三区精品在线| 欧美丰满一区二区免费视频| 毛片av一区二区| 中文字幕欧美三区| 欧美精品在欧美一区二区少妇| 蜜臀av一区二区三区| 精品久久久久久久久久久久包黑料 | 亚洲图片另类小说| 在线观看日韩精品| 免费欧美在线视频| 国产视频911| 日本高清不卡aⅴ免费网站| 亚洲超碰精品一区二区| 精品美女一区二区三区| 不卡欧美aaaaa| 婷婷六月综合网| 欧美videofree性高清杂交| 粉嫩蜜臀av国产精品网站| 一区二区三区四区视频精品免费 | 在线免费观看日本一区| 免费人成精品欧美精品| 综合激情成人伊人| 6080国产精品一区二区| 国产成人午夜电影网| 亚洲自拍偷拍图区| 精品国产一区久久| 91丨九色丨国产丨porny| 日韩精品一级中文字幕精品视频免费观看 | 91福利精品第一导航| 精品综合免费视频观看| 亚洲另类一区二区| 久久综合999| 欧美视频一区二区在线观看| 国产盗摄女厕一区二区三区| 五月天激情综合网| 欧美国产精品一区二区三区| 欧美日韩亚洲丝袜制服| 成人精品高清在线| 蜜臀av国产精品久久久久| 亚洲色图一区二区三区| 日韩欧美黄色影院| 欧美三级电影网站| www.欧美日韩| 国产精品中文有码| 日本亚洲电影天堂| 亚洲激情av在线| 国产精品久久久久久久久搜平片 |