Изменить цвет холста pyqt5 qml

Другой вариант - заменить install -y lxc-docker в скрипте на install -y lxc-docker-<version>.

Например, это установит docker 1.6.2:

RUN wget -qO- https://get.docker.com/ubuntu/ | sed -r 's/^apt-get install -y lxc-docker$/apt-get install -y lxc-docker-1.6.2/g' | sh
0
задан eyllanesc 13 July 2018 в 16:02
поделиться

1 ответ

Я не понимаю использование класса 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 .

0
ответ дан eyllanesc 17 August 2018 в 12:27
поделиться
  • 1
    Спасибо за ответ, он работает. Это задача класса, мне нужен этот класс, потому что позже я сгенерирую точки на стороне python, когда я нажимаю «Строить график». кнопка. К сожалению, я не задал правильный вопрос. Лучше вопрос, могу ли я заполнить холст на белом фоне, и когда я нажму кнопку, он будет рисовать, например, точку на этом белом холсте? Извините за несколько вопросов. – karambaq 13 July 2018 в 19:47
  • 2
    @karambaq В SO, вопрос задается за сообщение, поэтому он говорит, что задает вопрос, он не говорит, задавать вопросы, я приглашаю вас создать вопрос, указывающий, что вы хотите, я также рекомендую вам немного расследовать, хорошая ссылка qmlbook.github.io/ch07/index.html – eyllanesc 13 July 2018 в 19:58
Другие вопросы по тегам:

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