Russian Qt Forum
Июнь 14, 2024, 00:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Написать свой GraphsView  (Прочитано 1474 раз)
SektorCT
Частый гость
***
Offline Offline

Сообщений: 222


Просмотр профиля
« : Май 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"
            }
        }
    }
}

Посоветуйте пожалуйста.
Спасибо
Записан
DarkHobbit
Самовар
**
Offline Offline

Сообщений: 191


Просмотр профиля
« Ответ #1 : Май 14, 2024, 12:57 »

А чем Qwt не устроил?
Записан

Мои проекты на Qt: DoubleContact, LInvert
SektorCT
Частый гость
***
Offline Offline

Сообщений: 222


Просмотр профиля
« Ответ #2 : Май 16, 2024, 22:38 »

А чем Qwt не устроил?
Не понимаю вопроса
Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 222


Просмотр профиля
« Ответ #3 : Май 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 сообщать полотну где у него находятся нужные мне точки чтобы рисуемая кривая соответствовала нужным точкам.

Может кто посоветовать что-то на этот счет?
Записан
tux
Бывалый
*****
Offline Offline

Сообщений: 402



Просмотр профиля
« Ответ #4 : Май 17, 2024, 20:53 »

Не понимаю вопроса
А что тут понимать? В QWT есть множество инструментов для рисования разнообразных графиков. Вам именно эту библиотеку и посоветовали. Вместо изобретения велосипеда. К тому же мультиплатформенно получится.
Записан

SektorCT
Частый гость
***
Offline Offline

Сообщений: 222


Просмотр профиля
« Ответ #5 : Май 18, 2024, 13:59 »

Не понимаю вопроса
А что тут понимать? В QWT есть множество инструментов для рисования разнообразных графиков. Вам именно эту библиотеку и посоветовали. Вместо изобретения велосипеда. К тому же мультиплатформенно получится.

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

Сообщений: 402



Просмотр профиля
« Ответ #6 : Май 18, 2024, 14:55 »

Я же выше описал обьекты которые касаются qml, зачем вы виджеты предлагаете?
Чтобы избежать бесполезных советов, нужно задавать корректные вопросы. Ваш вопрос касался в целом Qt, qml был только в коде - соответственно первый же ответ вполне разумно упомянул QWT.
Записан

SektorCT
Частый гость
***
Offline Offline

Сообщений: 222


Просмотр профиля
« Ответ #7 : Май 22, 2024, 11:46 »

Я же выше описал обьекты которые касаются qml, зачем вы виджеты предлагаете?
Чтобы избежать бесполезных советов, нужно задавать корректные вопросы. Ваш вопрос касался в целом Qt, qml был только в коде - соответственно первый же ответ вполне разумно упомянул QWT.

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

В общем вопрос актуальный.
Записан
DarkHobbit
Самовар
**
Offline Offline

Сообщений: 191


Просмотр профиля
« Ответ #8 : Май 29, 2024, 11:56 »

обьекты которые касаются qml
Qtquickplot не подойдёт?
Даты коммитов, конечно, смущают, но тут надо проверять - может, оно уже давно достигло стадии "просто работает"?..
Записан

Мои проекты на Qt: DoubleContact, LInvert
SektorCT
Частый гость
***
Offline Offline

Сообщений: 222


Просмотр профиля
« Ответ #9 : Июнь 11, 2024, 19:11 »

обьекты которые касаются qml
Qtquickplot не подойдёт?
Даты коммитов, конечно, смущают, но тут надо проверять - может, оно уже давно достигло стадии "просто работает"?..
Нет, такое даже мне и попробовать не дадут попробовать.
на данный момент Я по сути сделал вертикальные и горизонтальные ValueAxis со шкалами. Но сейчас отстается главный вопрос, как в центральной обрасти рисовать кривые.
У меня лист с листами точек, и вот их надо как то все рисовать.
Canvas нельзя использовать.
Может кто через Shape может посоветовать как набор листов или точки просто рисовать или по ним кривые создать?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 23.