Pull to refresh

Грядущие вкусняшки в Qt Quick

Programming *Qt *
В блоге Qt появился обзор, предстоящих нововведений в Qt Quck в грядущей 5.1. Если вкратце, они добавили функционал виджетов, аналог QMainWindow и дали возможность использовать QML в виджет-проектах, правда в несколько усеченном варианте. Таким образом Qt Quick готов для разработки приложений и на десктопах.

Нам дали практически все то, что привыкли видеть в виджетах. Первое и самое пожалуй важное это компоновщики:
image
В чем собственно проблема. В виджетах компоновщики представляют собой удобный инструмент, когда дело доходит до изменения размеров отображаемого окна. до Qt 5.1 в QML подобный функционал тоже было можно реализовать, но сейчас стало проще. В пример можно привести, код из этой статьи:

До:
ToolBar {
    Row {
        id: row
        spacing: 2
        anchors.verticalCenter: parent.verticalCenter
        ToolButton { iconSource: "images/go-previous.png" }
        ToolButton { iconSource: "images/go-next.png" }
    }
    Slider {
        anchors.left: row.right
        anchors.leftMargin: 2
        anchors.verticalCenter: parent.verticalCenter
        anchors.right: parent.right
    }
}

После:
ToolBar {
    RowLayout {
        anchors.fill: parent
        spacing: 2
        ToolButton { iconSource: "images/go-previous.png" }
        ToolButton { iconSource: "images/go-next.png" }
        Slider { Layout.fillWidth: true }
    }
}


Добавили несколько View классов (или как их там): SplitView, ScrollView и TableView
image
Последний аналог QTableView и это классическое табличное представление, ScrollView является неким аналог QAbstractScrollArea, SplitView — аналог QSplitter.

Добавили классические элементы управления:
image
И дали возможности гнуть как душе угодно, ровно как и VIew-ры.

И вот так нам предлагают всем этим пользоваться:
GroupBox {
    id: gridBox
    title: "Grid layout"
    Layout.fillWidth: true

    GridLayout {
        id: gridLayout
        anchors.fill: parent
        rows: 3
        flow: GridLayout.TopToBottom

        Label { text: "Line 1" }
        Label { text: "Line 2" }
        Label { text: "Line 3" }

        TextField { }
        TextField { }
        TextField { }

        TextArea {
            text: "This widget spans over three rows in the GridLayout.\n"
                  + "All items in the GridLayout are implicitly positioned from top to bottom."
            Layout.rowSpan: 3
            Layout.fillHeight: true
            Layout.fillWidth: true
        }
    }
}

Ну что ж, по крайней мере это не стало сложнее, а вкупе с изначальными возможностями qml оставаться верным виджетам я уже смысла не вижу

Ссылки


Tags:
Hubs:
Total votes 36: ↑29 and ↓7 +22
Views 23K
Comments Comments 15