SkillAgentSearch skills...

QuickGridStar

A Qt grid layout clone of WPF's grid with "star sizing"

Install / Use

/learn @CaseySanchez/QuickGridStar
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Qt Quick GridStar layout


Description

The GridStar layout is a clone of the Windows Presentation Foundation's "Grid" type with star sizing capabilities, where each row and column is defined as a weighted proportion of the available space. This allows absolute control over how you want your layout to look.


RowDefinition Type

Properties

| Name | Type | Description | | --- |---| ---| | weight | real | Defines a weighted proportion of the GridStar's rows. Default value is 1.0. |

ColumnDefinition Type

Properties

| Name | Type | Description | | --- |---| ---| | weight | real | Defines a weighted proportion of the GridStar's columns. Default value is 1.0. |

GridStar Type

Attached Properties

| Name | Type | Description | | --- |---| ---| | ignore | bool | Set to true if you want this attached Item to not be positioned by the layout. Default value is false. | row | int | Specifies the row in which the attached Item is positioned. Default value is 0. | | column | int | Specifies the column in which the attached Item is positioned. Default value is 0. | | rowSpan | int | Defines how many rows the attached Item will span/occupy. Default value is 1. Values less than or equal to 0 will span the total remaining space minus that value. | | columnSpan | int | Defines how many columns the attached Item will span/occupy. Default value is 1. Values less than or equal to 0 will span the total remaining space minus that value. |

Properties

| Name | Type | Description | | --- | --- | --- | | rowSpacing | real | Defines the spacing between rows in pixels. | | columnSpacing | real | Defines the spacing between columns in pixels. |

Methods

| Name | Return Type | Parameters | Description | | --- | --- | --- | --- | | rowCount | int | None | Returns the number of rows in the grid definition. | | columnCount | int | None | Returns the number of columns in the grid definition. | | itemsAt | QVariant | int row, int column | Returns a Javascript array of the items at the cell of row and column. | | getRow | QQuickItem * | int row | Get the row definition at row. | | getColumn | QQuickItem * | int column | Get the column definition at column. | | addRow | QQuickItem * | real weight | Adds and returns a row definition of weight weight. | | addColumn | QQuickItem * | real weight | Adds and returns a column definition of weight weight. | | clearRows | void | None | Clears and deletes all row definitions. | | clearColumns | void | None | Clears and deletes all column definitions. | | clearItems | void | None | Clears and deletes all items positioned by the grid. |


Registration

Add include("QuickGridStar-master/quickgridstar.pri") to your project.pro, change "QuickGridStar-master" to the name of your QuickGridStar directory accordingly.


QML Example

import QtQuick 2.3
import QtQuick.Layouts 1.1
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.4

// IMPORTANT!
import QuickGridStar 1.0

ApplicationWindow
{
    visible: true
    width: 1280
    height: 720
    title: qsTr("GridStar")

    GridStar
    {
        RowDefinition { weight: 0.03 }
        RowDefinition { weight: 0.8 }
        RowDefinition { weight: 0.03 }

        ColumnDefinition { weight: 0.03 }
        ColumnDefinition { weight: 0.2 }
        ColumnDefinition { weight: 0.03 }
        ColumnDefinition { weight: 0.03 }
        ColumnDefinition { }
        ColumnDefinition { weight: 0.03 }

        Rectangle
        {
            GridStar.row: 0
            GridStar.column: 0
            GridStar.rowSpan: 0
            GridStar.columnSpan: 0

            color: "#CFCFCF"
        }

        Rectangle
        {
            GridStar.row: 0
            GridStar.column: 3
            GridStar.rowSpan: 0 // Span remaining rows
            GridStar.columnSpan: 3

            color: "#DDDDDD"
        }

        GridStar
        {
            GridStar.row: 1
            GridStar.column: 4
            GridStar.rowSpan: -1 // Span remaining rows minus 1

            RowDefinition { weight: 0.2 }
            RowDefinition { weight: 0.8 }

            ColumnDefinition { weight: 0.2 }
            ColumnDefinition { weight: 0.4 }
            ColumnDefinition { weight: 0.2 }

            Button
            {
                GridStar.row: 0
                GridStar.column: 1

                text: "Sub Grid Button"
            }
        }

        GridStar
        {
            GridStar.row: 1
            GridStar.column: 1

            RowDefinition { weight: 0.1 }
            RowDefinition { weight: 0.05 }
            RowDefinition { weight: 0.1 }
            RowDefinition { weight: 0.05 }
            RowDefinition { weight: 0.1 }
            RowDefinition { weight: 0.5 }
            RowDefinition { weight: 0.1 }

            ColumnDefinition { }

            Button
            {
                GridStar.row: 0
                GridStar.column: 0

                text: "Grid Button 1"
            }

            Button
            {
                GridStar.row: 2
                GridStar.column: 0

                text: "Grid Button 2"
            }

            Button
            {
                GridStar.row: 4
                GridStar.column: 0

                text: "Grid Button 3"
            }

            Button
            {
                GridStar.row: 6
                GridStar.column: 0

                text: "Grid Button 4"
            }
        }
    }
}

Result


Happy coding Qt community!

View on GitHub
GitHub Stars12
CategoryDevelopment
Updated1y ago
Forks2

Languages

C++

Security Score

75/100

Audited on Nov 13, 2024

No findings