Веб-клиент Cloud Explorer

Я не понимаю использование класса Plot, это кажется ненужным, потому что единственное, что вы делаете, это переслать полученный сигнал. Если вы хотите изменить цвет, вы можете сделать это напрямую, используя только QML, в следующем примере случайные цвета генерируются каждый раз при нажатии кнопки.

main.qml

import QtQuick 2.0
import QtQuick.Controls 2.1
import QtQuick.Controls.Material 2.1
import QtQuick.Layouts 1.2

ApplicationWindow {
    visible: true
    width: 640
    height: 240
    title: qsTr("Function plot")
    Material.theme: Material.Dark

    property color plotColor : "blue"
    onPlotColorChanged: canv.requestPaint()

    GridLayout {
        anchors.top: parent.top
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.margins: 9

        columns: 4
        rows: 4
        rowSpacing: 10
        columnSpacing: 10

        Text {
            color: "whitesmoke"
            text: qsTr("Left bound")
        }

        TextField {
            id: left_bound
        }

        Text {
            color: "whitesmoke"
            text: qsTr("Right bound")
        }

        TextField {
            id: right_bound
        }

        ComboBox{
            model: ['cos', 'sin', 'x^2']
        }

        Button {
            height: 40
            Layout.fillWidth: true
            text: qsTr("Build plot")
            onClicked: plotColor = Qt.rgba(Math.random(),Math.random(),Math.random(),1);
        }


        Canvas {
            id: canv
            Layout.fillWidth: true
            height: 500
            Layout.columnSpan: 4
            onPaint: {
                var ctx = getContext("2d");
                ctx.fillStyle = plotColor;
                ctx.fillRect(0, 0, width, height);
            }
        }
    }
}

Если вы хотите увеличить масштаб / увеличить масштаб, вы можете использовать функцию масштабирования , чтобы вы могли также реализовать макет различных графических объектов.

С другой стороны, я думаю, что проще всего использовать модуль QtCharts , вы уже выполнили все такие задачи.

Если вам не нужно создавать классы на python / C ++, то есть, если вы можете сделать все в QML, это намного проще, поэтому я указываю, что я не вижу необходимости в классе Plot.

Если вы видите, что Qt Charts не достаточно, или вы не хотите использовать холст, и вы более знакомы с python, вы можете создать свой собственный холст, используя класс QQuickPaintedItem .

-1
задан Julian Docev 19 January 2019 в 04:59
поделиться

1 ответ

Другие вопросы по тегам:

Похожие вопросы: