Russian Qt Forum

Qt => Qt Quick => Тема начата: SektorCT от Май 04, 2024, 15:37



Название: Написать свой GraphsView
Отправлено: SektorCT от Май 04, 2024, 15:37
Всем привет.
В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView.
По этой причине я хочу написать хотябы с минимальным набором функционала свой GraphsView.
А это значит мне надо сделать и центральную сетку с координатами и ValueAxis.
Мог бы кто посоветовать из чего должен например ValueAxis состоять? То есть это жэ набор линий(tickmarks), мажорных со значениями и минорных между ними, где первый и последний четко сверху и снизу самого обьекта.
Пробовал вот что-то такое, но не так выглядит

Код:
Item
{
    id: root

    property int        minorTickCount: 4
    property string     titleText: titleText.text
    property int        tickInterval: 5             // колличество долей и значений между максимальным и минимальным значением
    property double     min: 0
    property double     max: 4

    width: 50
    height: 120

    Text
    {
        id: titleText
        text: qsTr("ValueAxis")
        rotation : 270
        anchors.verticalCenter: parent.verticalCenter
        anchors.left: parent.left
    }

    Rectangle
    {
        id: mainLine

        width: 1
        height: parent.height
        anchors.right: parent.right
        color: "black"
    }

    ColumnLayout
    {
        // anchors.fill: parent
        anchors.right: mainLine.left
        anchors.top: root.top
        anchors.bottom: root.bottom

        Repeater
        {
            model: 8

            delegate: Rectangle
            {
                width: root.width / 2
                height: 2
                color: "#44ff0000"
            }
        }
    }
}

Посоветуйте пожалуйста.
Спасибо


Название: Re: Написать свой GraphsView
Отправлено: DarkHobbit от Май 14, 2024, 12:57
А чем Qwt не устроил?


Название: Re: Написать свой GraphsView
Отправлено: SektorCT от Май 16, 2024, 22:38
А чем Qwt не устроил?
Не понимаю вопроса


Название: Re: Написать свой GraphsView
Отправлено: SektorCT от Май 16, 2024, 22:40
В общем долго я капался и понял что придется ве писать руками.
То есть создать свой ValueAxis и полотно координатное на котором и надо что то отрисовывать. В моем случаи сплайны.
Я начал с создания шкалы VulueAxis, а котором я по оси Y распологаю тики, так же по оси X есть второй аналог ValueAxis.
Для рисования я пока пробую использовать
Код:
Shape
Shape
{
    anchors.fill: parent

    ShapePath
    {
        strokeWidth: 3
        strokeColor: "darkgray"

        PathPolyline
        {
            path: root.flowDiagram.resultLines
        }
    }
}
Но попытка передать таким путем набор точек выглядит как оооочень маленький обьект нарисованный в перхнем левом углу.

Суть проблемы: мне надо на основе имеющихся координат из ValueAxis сообщать полотну где у него находятся нужные мне точки чтобы рисуемая кривая соответствовала нужным точкам.

Может кто посоветовать что-то на этот счет?


Название: Re: Написать свой GraphsView
Отправлено: tux от Май 17, 2024, 20:53
Не понимаю вопроса
А что тут понимать? В QWT есть множество инструментов для рисования разнообразных графиков. Вам именно эту библиотеку и посоветовали. Вместо изобретения велосипеда. К тому же мультиплатформенно получится.


Название: Re: Написать свой GraphsView
Отправлено: SektorCT от Май 18, 2024, 13:59
Не понимаю вопроса
А что тут понимать? В QWT есть множество инструментов для рисования разнообразных графиков. Вам именно эту библиотеку и посоветовали. Вместо изобретения велосипеда. К тому же мультиплатформенно получится.

Это виджеты, их мы в проекте не используем.
Так что это бемполезный совет. Я же выше описал обьекты которые касаются qml, зачем вы виджеты предлагаете?


Название: Re: Написать свой GraphsView
Отправлено: tux от Май 18, 2024, 14:55
Я же выше описал обьекты которые касаются qml, зачем вы виджеты предлагаете?
Чтобы избежать бесполезных советов, нужно задавать корректные вопросы. Ваш вопрос касался в целом Qt, qml был только в коде - соответственно первый же ответ вполне разумно упомянул QWT.


Название: Re: Написать свой GraphsView
Отправлено: SektorCT от Май 22, 2024, 11:46
Я же выше описал обьекты которые касаются qml, зачем вы виджеты предлагаете?
Чтобы избежать бесполезных советов, нужно задавать корректные вопросы. Ваш вопрос касался в целом Qt, qml был только в коде - соответственно первый же ответ вполне разумно упомянул QWT.

В вопросе даже было написано не QGraphsView а именно GraphsView что как раз и указывает не на С++ часть реализации даже самого обьекта а на QML.
Тоже самое и устаревшего ChartView касается.

В общем вопрос актуальный.


Название: Re: Написать свой GraphsView
Отправлено: DarkHobbit от Май 29, 2024, 11:56
обьекты которые касаются qml
Qtquickplot (https://gitlab.com/qtquickplot/qtquickplot) не подойдёт?
Даты коммитов, конечно, смущают, но тут надо проверять - может, оно уже давно достигло стадии "просто работает"?..


Название: Re: Написать свой GraphsView
Отправлено: SektorCT от Июнь 11, 2024, 19:11
обьекты которые касаются qml
Qtquickplot (https://gitlab.com/qtquickplot/qtquickplot) не подойдёт?
Даты коммитов, конечно, смущают, но тут надо проверять - может, оно уже давно достигло стадии "просто работает"?..
Нет, такое даже мне и попробовать не дадут попробовать.
на данный момент Я по сути сделал вертикальные и горизонтальные ValueAxis со шкалами. Но сейчас отстается главный вопрос, как в центральной обрасти рисовать кривые.
У меня лист с листами точек, и вот их надо как то все рисовать.
Canvas нельзя использовать.
Может кто через Shape может посоветовать как набор листов или точки просто рисовать или по ним кривые создать?