[Development] QtQuick.Layouts and content margins

Alberto Mardegan mardy at users.sourceforge.net
Sun Feb 24 12:29:22 CET 2019

Hi there!
  I'm working on a desktop style for QtQuick.Controls 2 [1], and I'm
currently investigating the issue of layouts. My current approach is to
define my own ColumnLayout element like this:

import QtQuick.Layouts 1.2
import it.mardy.Desktop.private 1.0

ColumnLayout {
    anchors {
        leftMargin: Style.layoutLeftMargin
        topMargin: Style.layoutTopMargin
        rightMargin: Style.layoutRightMargin
        bottomMargin: Style.layoutBottomMargin
    spacing: Style.layoutVerticalSpacing

where the Style element is a singleton which retrieves the default
layout margins encoded in the QStyle.

Now, there's are a couple of problems with this solution: if the user of
my layout does not set the "anchors.fill" property, but instead
positions the layout using "x", "y", "width" or "heigh" properties, the
margins will be ignored.
The other (bigger) problem is that the implicit size of my layout is
wrong: it should include the margins!

My proposal is to add a set of "margins" properties to QtQuick.Layout's
items, which would set the default content margins for all child items
that don't explicitly set their own via the attached Layout properties.
These margins would also be taken into account when computing the
implicit size of the layout.

If this looks like a good idea, I can try and propose a patch.


[1]: https://gitlab.com/mardy/qqc2-desktop

http://www.mardy.it - Geek in un lingua international

More information about the Development mailing list