qt - MouseArea covering a QML Row (or, Auto-Sizing Image+Text) -


summary: how can stick icon next text, without hardcoding dimensions, , wrap both of them in mousearea...in way works inside gridlayout?


i have created qml layout has rows of labels across tappable "buttons". buttons icon along text:

two rows 2 columns; rightmost column has images , text inline

to create buttons using row, 2 items stick (without hardcoded dimensions) , have automatic size gridlayout can use:

gridlayout {   columns:2; rowspacing:30    text {     text: audioserver.label     layout.alignment: qt.alignleft   }    row {     spacing:10; layout.alignment:qt.alignright     image { width:29; height:30; y:10; source:"qrc:/rescan.png" }     text  { text:"find another" }   }    text {     text: "system uptime "+system.uptime     layout.alignment: qt.alignleft   }    row {     spacing:10; layout.alignment:qt.alignright     image { width:29; height:30; y:10; source:"qrc:/restart.png" }     text  { text: "restart" }   } } 

i want put mousearea around each button. if put inside row, this...

row {   image { width:29; height:30; y:10; source:"qrc:/rescan.png" }   text  { text:"find another" }    mousearea {     anchors.fill: parent     onclicked: rescan()   } } 

...then (reasonable) error qml row: cannot specify left, right, horizontalcenter, fill or centerin anchors items inside row. row not function. and, more importantly, layout breaks (i think row gets 0 width, gridlayout has flow off right side.)

i cannot move mousearea outside of gridlayout this...

gridlayout {   ...   row {     id: rescanbutton     image { width:29; height:30; y:10; source:"qrc:/rescan.png" }     text  { text:"find another" }   } } mousearea {   anchors.fill: rescanbutton   onclicked: rescan() } 

...because can anchor siblings or parents.

but cannot put mousearea inside gridlayout, because try lay out item.

how can mousearea wrapping buttons?

it's acceptable me use container other row, prefer not hard-code text or container dimensions.

with have got this:

gridlayout {   ...   mousearea {     onclicked: rescan()     width:  childrenrect.width     height: childrenrect.height     row {       image { width:29; height:30; y:10; source:"qrc:/rescan.png" }       text  { text:"find another" }     }   } } 

Popular posts from this blog

php - How should I create my API for mobile applications (Needs Authentication) -

5 Reasons to Blog Anonymously (and 5 Reasons Not To)

Google AdWords and AdSense - A Dynamic Small Business Marketing Duo