[Interest] QML id

Gian Maxera gmaxera at gmail.com
Mon Apr 11 15:02:06 CEST 2016


> On 11 Apr 2016, at 13:55, Igor Mironchik <igor.mironchik at gmail.com> wrote:
> 
> 
> 
> On 11.04.2016 15:10, Gian Maxera wrote:
>> 
>>> On 11 Apr 2016, at 11:44, Igor Mironchik < <mailto:igor.mironchik at gmail.com>igor.mironchik at gmail.com <mailto:igor.mironchik at gmail.com>> wrote:
>>> 
>>> Hello,
>>> 
>>> On 11.04.2016 13:19, Gian Maxera wrote:
>>>> 
>>>>> On 11 Apr 2016, at 11:14, Igor Mironchik <igor.mironchik at gmail.com <mailto:igor.mironchik at gmail.com>> wrote:
>>>>> 
>>>>> 
>>>>> 
>>>>> On 11.04.2016 12:57, Gian Maxera wrote:
>>>>>> If the Text is inside the generated rectangle into the repeater you don’t need to generate different Ids, you can do that:
>>>>>> 
>>>>>> Repeater {
>>>>>>   model: 10
>>>>>>   delegate: Rectangle {
>>>>>>      id: cellRect
>>>>>>      Text {
>>>>>>         anchor.horizontalCenter: cellRect.horizontalCenter
>>>>>>      }
>>>>>>   }
>>>>>> }
>>>>>> 
>>>>>> Even if the delegate has a fixed id and generated 10 times, QML will resolve correctly it.
>>>>> 
>>>>> I want to rewrite my QML with chess board with Repeater. And I want to see the next:
>>>>> 
>>>>> <chess.png>
>>>> 
>>>> I don’t know your current code, but If I would in your shoes, I will use a model representing where to put the chess items and a Grid to lay out the items. With Grid Item you can setup a global alignment of the items.
>>>> I think it should work in your case.
>>>> If you want more help, please share with us some snippet of code so I can understand what you need to achieve.
>>> 
>>> Model and Grid is fine. I can place chess and rects, fine. But how to put letters and numbers?
>> 
>> 
>> One solution using Column and Row instead of Grid to split Repeaters:
>> 
>> Column {
>>     spacing: 0
>>     Row {
>>         // top letters
>>         EmptyItem { // use fixed width here so you can align the text }
>>         Repeater {
>> 	    model: [“A”, “B”, … “H”]
>>             delegate: DisplayTheLetter { … }
>>         }
>>         EmpyItem { }
>>     }
>>     // Rows with cells
>>     Repeater {
>>        model: 8
>>        delegate: Row {
>>            // number
>>            Text {
>>                 // use fixed width and align left the text
>>                 // vertical alignment with anchors
>>                 anchors.verticalCenter: parent.verticalCenter
>>                 text: index+1
>>            }
>>            // first row of chess board
>>            Repeater {
>>                 model: chessBoardModel[index]
>>                 delegate: ASingleCellOfChessBoard { … }
>>            }
>>        }
>>     }
>>     Row {
>>         // bottom letters
>>         EmptyItem { }
>>         Repeater {
>> 	    model: [“A”, “B”, … “H”]
>>             delegate: DisplayTheLetter { … }
>>         }
>>         EmpyItem { }
>>     }
>> }
> 
> Looks like a solution. Only one question is still opened... How to align letters and numbers in center if chess board should be resizable? I.e. I can't use x and y properties for that. I need anchor.horizontalCenter which use AnchorLine, not pixels…

With my solution you cannot use anchor.horizontalCenter because you are inside a Row.
What you need to do is to set the width of the Text element and use horizontalAlignment.
I suppose that in same way you are calculating the dimension of the cell during resize, so the code will be like for the Text:

Text {
    width: cellWidth
    horizontalAlignment: Text.AlignLeft
}

>> 
>>> 
>>> Thank you.
>>> 
>>>> 
>>>>>> 
>>>>>> Ciao,
>>>>>> Gianluca.
>>>>>> 
>>>>>>      }
>>>>>> 
>>>>>>> On 11 Apr 2016, at 10:49, Igor Mironchik < <mailto:igor.mironchik at gmail.com>igor.mironchik at gmail.com <mailto:igor.mironchik at gmail.com>> wrote:
>>>>>>> 
>>>>>>> Look. I want to generate chess board - rectangles (8x8). And I want to place numbers an letters on the sides. This numbers and letters should be anchored to centers of rectangles. I.e. I want to have something like:
>>>>>>> 
>>>>>>> Text {
>>>>>>>    anchor.horizontalCenter: cell00.horizontalCenter
>>>>>>> }
>>>>>>> 
>>>>>>> ...
>>>>>>> 
>>>>>>> On 11.04.2016 12:40, Gian Maxera wrote:
>>>>>>>> Hello,
>>>>>>>> I don’t think so.
>>>>>>>> Why do you need it ? Maybe we can suggest to you an alternative solution.
>>>>>>>> 
>>>>>>>> Ciao,
>>>>>>>> Gianluca.
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> On 11 Apr 2016, at 10:38, Igor Mironchik <igor.mironchik at gmail.com <mailto:igor.mironchik at gmail.com>> wrote:
>>>>>>>>> 
>>>>>>>>> Hello,
>>>>>>>>> 
>>>>>>>>> Is it possible to generate id of item in Repeater, for example?
>>>>>>>>> 
>>>>>>>>> Thank you.
>>>>>>>>> _______________________________________________
>>>>>>>>> Interest mailing list
>>>>>>>>> Interest at qt-project.org <mailto:Interest at qt-project.org>
>>>>>>>>> http://lists.qt-project.org/mailman/listinfo/interest <http://lists.qt-project.org/mailman/listinfo/interest>
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20160411/a993cd2d/attachment.html>


More information about the Interest mailing list