[Interest] [SOLVED] ListView not start at index 0 when is Horizontal
Federico Buti
bacarozzo at gmail.com
Mon Apr 6 19:21:24 CEST 2015
Ah well, also working on the delegate was an option, indeed. :)
I would always prefer layouts over (too specific) anchoring but I think
it's just a matter of taste.
Anyhow, glad to hear you solved the issue.
Cheers,
F.
---
Federico Buti
On 6 April 2015 at 19:03, Gianluca <gmaxera at gmail.com> wrote:
> Hello Federico,
> thank to point where the problem appear.
> It seems a nasty bug.
> However, I cannot solve it using Layouts because I’m not comfortable on
> using Layouts. I prefer to use anchors.
> In any case, I solved the problem.
> In fact, the delegate Item has the width set has the parent.width (that it
> is the ListView behaving oddly).
> When I removed this binding, the odd behavior disappeared and I can
> constraint the width and the height as I want (and I prefer :-) )
>
> Thanks,
> Gianluca.
>
>
> Il giorno 06/apr/2015, alle ore 18:28, Federico Buti <bacarozzo at gmail.com>
> ha scritto:
>
> Hi Gianluca,
> it's hard to say if it is a bug or not. The problem is anyway related to
> the sizing of the list, i.e. if you set listHistory.width to
>
> width: parent.width
>
> the problem disappears. If you set a similar constraint for the height and
> set the ListView to the vertical layout the same, odd, behaviour occurs.
>
> Instead of using such constraints, what about using a layout to size your
> three elements? Something involving a RowLayout, for instance, works
> perfectly. See the modified code below:
>
> import QtQuick 2.4
>
> import QtQuick.Window 2.2
>
> import QtQuick.Layouts 1.1
>
>
> Window {
>
> visible: true
>
> width: 400
>
> height: 400
>
> RowLayout {
>
> anchors.fill: parent
>
> Item {
>
> id: previous
>
> Layout.preferredWidth: parent.width / 3
>
> Layout.fillHeight: true
>
> }
>
> ListView {
>
> id: listHistory
>
> Layout.preferredWidth: parent.width / 3
>
> Layout.fillHeight: true
>
> clip: true
>
> orientation: ListView.Horizontal
>
> snapMode: ListView.SnapToItem
>
> highlightRangeMode: ListView.StrictlyEnforceRange
>
> onCurrentIndexChanged: console.log( "Current Index: "+currentIndex )
>
> model: modelHistory
>
> delegate: Item {
>
> width: listHistory.width
>
> height: listHistory.height
>
> Text {
>
> width: parent.width
>
> anchors.bottom: parent.verticalCenter
>
> font.pixelSize: 20 //* mm
>
> minimumPixelSize: 10 //* mm
>
> fontSizeMode: Text.Fit
>
> horizontalAlignment: Text.AlignHCenter
>
> text: year
>
> }
>
> Text {
>
> width: parent.width
>
> height: parent.height/2-1.5 //* mm
>
> anchors.bottom: parent.bottom
>
> font.pixelSize: 20 //* mm
>
> minimumPixelSize: 10 //* mm
>
> fontSizeMode: Text.Fit
>
> horizontalAlignment: Text.AlignHCenter
>
> wrapMode: Text.Wrap
>
> text: what
>
> }
>
> }
>
> }
>
> Item {
>
> id: next
>
> Layout.preferredWidth: parent.width / 3
>
> Layout.fillHeight: true
>
> }
>
> }
>
> }
>
>
> Cheers,
>
> F.
>
>
> ---
> Federico Buti
>
> On 6 April 2015 at 11:15, Gianluca <gmaxera at gmail.com> wrote:
>
>> Dear all,
>> I’m experiencing a unexpected behavior:
>> I have a ListView in QML that display data from a ListModel.
>> The dimension of ListView is set in such a way that only one element
>> delegate is display at time.
>> When I configure the ListView to be Vertical, then the first item
>> displayed is the first item on the ListModel.
>> But when I configure the ListView to be Horizontal, then the first item
>> displayed is not the first item on the ListModel … but one in the middle.
>> Why ??
>> Forcing the property currentIndex to 0 do not solve the problem.
>> Calling positionViewAtBeginning do not solve the problem :-(
>>
>> What else I can do ?
>>
>> // Code of ListView:
>> ListView {
>> id: listHistory
>> anchors.centerIn: parent
>> height: parent.height
>> width: parent.width-previous.width-next.width
>> clip: true
>> orientation: ListView.Horizontal
>> snapMode: ListView.SnapToItem
>> highlightRangeMode: ListView.StrictlyEnforceRange
>> onCurrentIndexChanged: console.log( "Current
>> Index: "+currentIndex )
>> model: modelHistory
>> delegate: Item {
>> width: listHistory.width
>> height: listHistory.height
>> Text {
>> width: parent.width
>> anchors.bottom:
>> parent.verticalCenter
>> color: "white"
>> font.pixelSize: 8.5*mm
>> minimumPixelSize: 4*mm
>> fontSizeMode: Text.Fit
>> horizontalAlignment:
>> Text.AlignHCenter
>> text: year
>> }
>> Text {
>> color: "white"
>> width: parent.width
>> height: parent.height/2-1.5*mm
>> anchors.bottom: parent.bottom
>> font.pixelSize: 2.4*mm
>> minimumPixelSize: 1*mm
>> fontSizeMode: Text.Fit
>> horizontalAlignment:
>> Text.AlignHCenter
>> wrapMode: Text.Wrap
>> text: what
>> }
>> }
>> }
>>
>> // On the console I get the following message:
>> qml: Current Index: 0
>> qml: Current Index: 19
>>
>> But Who change the current index to 19 ??
>>
>> Thanks,
>> Gianluca.
>>
>>
>> _______________________________________________
>> Interest mailing list
>> Interest at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/interest
>>
>
>
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20150406/ea9283a7/attachment.html>
More information about the Interest
mailing list