LINUX.ORG.RU

qt-3.3.2-X11, патч для QListViewItem


0

0

Дописал аналог CTreeView::SetItemData() и GetItemData().
Это чтобы прикрепить к item указатель на данные. Может быть,
я не увидел это сразу, но такого вроде ещё не было там.

--- src/widgets/qlistview.h.orig	Mon May 31 11:00:31 2004
+++ src/widgets/qlistview.h	Tue Jun  1 08:58:23 2004
@@ -109,6 +109,9 @@
     virtual void setText( int, const QString &);
     virtual QString text( int ) const;
 
+    void * itemData();
+    void setItemData( void * pData );
+    
     virtual void setPixmap( int, const QPixmap & );
     virtual const QPixmap * pixmap( int ) const;
 
@@ -224,6 +227,7 @@
     int renameCol;
 
     void * columns;
+    void * m_pData;
 
     friend class QListView;
 };
--- src/widgets/qlistview.cpp.orig	Mon May 31 11:00:25 2004
+++ src/widgets/qlistview.cpp	Tue Jun  1 09:02:36 2004
@@ -723,6 +723,7 @@
     siblingItem = childItem = 0;
 
     columns = 0;
+    m_pData = 0;
 
     selected = 0;
 
@@ -1879,6 +1880,27 @@
     }
 }
 
+/*!
+    Returns the data pointer, associated with this item, or 0 if unset
+    
+    \sa setItemData()
+*/
+
+void * QListViewItem::itemData()
+{
+    return m_pData;
+}
+
+/*!
+    Associates the data pointer \a pData with this item.
+    
+    \sa itemData()
+*/
+
+void QListViewItem::setItemData( void * pData )
+{
+    m_pData = pData;
+}
 
 /*!
     Sets the pixmap in column \a column to \a pm, if \a pm is non-null

Сюда же патч для html доков


--- doc/html/qlistviewitem.html.orig	Mon May 31 11:30:16 2004
+++ doc/html/qlistviewitem.html	Tue Jun  1 09:21:54 2004
@@ -59,6 +59,8 @@
 <li><div class=fn>int <a href="#depth"><b>depth</b></a> () const</div></li>
 <li><div class=fn>virtual void <a href="#setText"><b>setText</b></a> ( int&nbsp;column, const&nbsp;QString&nbsp;&amp;&nbsp;text )</div></li>
 <li><div class=fn>virtual QString <a href="#text"><b>text</b></a> ( int&nbsp;column ) const</div></li>
+<li><div class=fn>void <a href="#setItemData"><b>setItemData</b></a> ( void&nbsp;*&nbsp;pData )</div></li>
+<li><div class=fn>void * <a href="#itemData"><b>itemData</b></a> ()</div></li>
 <li><div class=fn>virtual void <a href="#setPixmap"><b>setPixmap</b></a> ( int&nbsp;column, const&nbsp;QPixmap&nbsp;&amp;&nbsp;pm )</div></li>
 <li><div class=fn>virtual const QPixmap * <a href="#pixmap"><b>pixmap</b></a> ( int&nbsp;column ) const</div></li>
 <li><div class=fn>virtual QString <a href="#key"><b>key</b></a> ( int&nbsp;column, bool&nbsp;ascending ) const</div></li>
@@ -463,6 +465,12 @@
 <p> <p>See also <a href="#itemAbove">itemAbove</a>() and <a href="qlistview.html#itemRect">QListView::itemRect</a>().
 
 <p>Example: <a href="dirview-example.html#x1735">dirview/dirview.cpp</a>.
+
+<h3 class=fn>void * <a name="itemData"></a>QListViewItem::itemData ()
+</h3>
+Returns the data pointer, associated with this item, or 0 if unset.
+<p> <p>See also <a href="#setItemData">setItemData</a>().
+
 <h3 class=fn>int <a name="itemPos"></a>QListViewItem::itemPos () const
 </h3>
 Returns the y coordinate of this item in the list view's
@@ -638,6 +646,11 @@
 of pixels.
 <p> <p>See also <a href="#height">height</a>(), <a href="#totalHeight">totalHeight</a>(), and <a href="#isOpen">isOpen</a>().
 
+<h3 class=fn>void <a name="setItemData"></a>QListViewItem::setItemData ( void&nbsp;*&nbsp;pData )
+</h3>
+This function associates the data pointer <em>pData</em> with this item.
+<p> <p>See also <a href="#itemData">itemData</a>().
+
 <h3 class=fn>void <a name="setMultiLinesEnabled"></a>QListViewItem::setMultiLinesE
nabled ( bool&nbsp;b )<tt> [virtual]</tt>
 </h3>
 If <em>b</em> is TRUE each of the item's columns may contain multiple
--- doc/html/qlistviewitem-members.html.orig	Mon May 31 11:30:09 2004
+++ doc/html/qlistviewitem-members.html	Tue Jun  1 09:23:39 2004
@@ -62,6 +62,7 @@
 <li><a href="qlistviewitem.html#isVisible">isVisible</a>()
 <li><a href="qlistviewitem.html#itemAbove">itemAbove</a>()
 <li><a href="qlistviewitem.html#itemBelow">itemBelow</a>()
+<li><a href="qlistviewitem.html#itemData">itemData</a>()
 <li><a href="qlistviewitem.html#itemPos">itemPos</a>()
 <li><a href="qlistviewitem.html#key">key</a>()
 <li><a href="qlistviewitem.html#listView">listView</a>()
@@ -83,6 +84,7 @@
 <li><a href="qlistviewitem.html#setEnabled">setEnabled</a>()
 <li><a href="qlistviewitem.html#setExpandable">setExpandable</a>()
 <li><a href="qlistviewitem.html#setHeight">setHeight</a>()
+<li><a href="qlistviewitem.html#setItemData">setItemData</a>()
 <li><a href="qlistviewitem.html#setMultiLinesEnabled">setMultiLinesEnabled
</a>()
 <li><a href="qlistviewitem.html#setOpen">setOpen</a>()
 <li><a href="qlistviewitem.html#setPixmap">setPixmap</a>()

RomanU
() автор топика
Ответ на: комментарий от RomanU

Патч троллям отсылал?

Хотя идея не совсем понятна (с CTreeView не знаком).
Обычно в таких случаях QListViewItem наследуют.

ANDI ★★
()
Ответ на: комментарий от ANDI

Патч я сначала туда отослал, а потом сюда писал.
Да, можно конечно наследовать ... а можно и так сделать, как я предложил.
Просто я думаю, что это неплохая фича. По крайней мере в вин32 это сделано.
Идея - связать конкретный item и некоторые данные, ну, например, структуру, которая будет более полно описывать информацию об item.
Мне это понадобилось, когда я переделывать MFC-шный кусок на QT.

RomanU
() автор топика
Ответ на: комментарий от RomanU

Если ответ пришлют, кинь сюда, интересно)
А вообще они в 4-ой переделали QListViewItem. Может, что-то подобное и сделали.
Хотя тогда для однообразия придется переделывать QCanvasItem и все прочие *Items...



ANDI ★★
()
Ответ на: комментарий от ANDI

2ANDI:
Ты оказался прав ....

-------------------------------------
Hello Roman,

C++ allows you to subclass a class and to add new members and APIs.
There is no need to use void* here and waste 4 bytes in a generic item
class.

Regards,
Volker

--
Volker Hilsheimer, Support Manager
Trolltech AS, Waldemar Thranes gate 98, NO-0175 Oslo, Norway
-------------------------------------

RomanU
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.