[Interest] ListView questions

Nurmi J-P jpnurmi at theqtcompany.com
Thu Dec 4 20:56:20 CET 2014


> On 04 Dec 2014, at 20:42, Jason H <jhihn at gmx.com> wrote:
> 
> 
> 
>> Sent: Thursday, December 04, 2014 at 2:21 PM
>> From: "Nurmi J-P" <jpnurmi at theqtcompany.com>
>> To: interest <interest at qt-project.org>
>> Cc: "Jason H" <jhihn at gmx.com>
>> Subject: Re: [Interest] ListView questions
>> 
>> 
>>> On 04 Dec 2014, at 20:07, Jason H <jhihn at gmx.com> wrote:
>>> 
>>> So I am finding that ListView is poorly documented. It inherits Flickable, but does not otherwise have any currentIndexChanged() events, except that, it has it... somehow.
>>> 
>>> I am trying to use a ListView with a delegate that has the following behavior:
>>> Unselected item delegate:
>>> - A line of text
>>> - Font is a color
>>> 
>>> Selected Item delegate:
>>> - 2 lines of text (double height)
>>> - Font is a different color
>>> - Alternate background color (easy via highlight property)
>>> 
>>> 
>>> I can expand the delegate onCurrentIndexChanged, but there is no documentation if there is a previous item availible. And if I add a property, how do I alter the non-current item delegate?
>>> 
>>> Where is the complete ListView documentation?
>> 
>> It doesn't sound like you need onCurrentIndexChanged or the previous item at all. You could just create declarative bindings that change the delegate looks based on the attached ListView.isCurrentItem property.
>> 
>> http://qt-project.org/doc/qt-5/qml-qtquick-listview.html#isCurrentItem-prop
>> 
>> --
>> J-P Nurmi
>> 
>> 
> 
> Thanks, that works, but I found I needed: property bool isSelected: ListView.isCurrentItem
> added to the item for the sub-elements in the delegate to know. Is that expected?

Yes, that's how attached properties work in general. A quote from the detailed description of ListView:

"ListView attaches a number of properties to the root item of the delegate, for example ListView:isCurrentItem. In the following example, the root delegate item can access this attached property directly as ListView.isCurrentItem, while the child contactInfo object must refer to this property as wrapper.ListView.isCurrentItem."

> And I still think that ListView docs don't show all the signals the ListView generates.

Property change notifies are part of the QML language:

http://qt-project.org/doc/qt-5/qtqml-syntax-signals.html#property-change-signal-handlers

PS. Please keep the discussion on the mailing list.

--
J-P Nurmi




More information about the Interest mailing list