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 <gmax...@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 <bacaro...@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 <gmax...@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@qt-project.org >> http://lists.qt-project.org/mailman/listinfo/interest >> > > > > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest > >
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest