Как я могу создать или достичь такой диаграммы в Qt? - PullRequest
0 голосов
/ 03 декабря 2018

enter image description here

Я хочу создать такой график в qt.Я уже искал и не могу найти способ сделать это.

Я также не могу найти способ настроить Barchart и выглядеть так в приложениях на основе виджетов

Ответы [ 3 ]

0 голосов
/ 03 декабря 2018

Easy в QML!

import QtQuick 2.0
import QtQuick.Layouts 1.1

Rectangle
{
    width: 600
    height: 300

    ListModel
    {
        id: dataModel
        ListElement { label: "C.A"; value: 37 }
        ListElement { label: "C.B"; value: 58 }
        ListElement { label: "C.C"; value: 16 }
        ListElement { label: "C.D"; value: 5 }
        ListElement { label: "C.E"; value: 95 }
        ListElement { label: "C.F"; value: 10 }
        ListElement { label: "C.G"; value: 27 }
        ListElement { label: "C.H"; value: 2 }
    }

    Rectangle
    {
        height: 4
        width: layout.width
        anchors.top: layout.bottom
        anchors.horizontalCenter: layout.horizontalCenter
        color: "#bbbdbe"
    }
    RowLayout
    {
        id: layout
        width: 400
        height: 200
        spacing: 0
        anchors.centerIn: parent

        Repeater
        {
            id: rpt
            property int barWidth: layout.width / count
            model: dataModel
            delegate:
                Rectangle
                {
                    width: rpt.barWidth
                    height: layout.height
                    color: "transparent"

                    Rectangle
                    {
                        anchors.bottom: parent.bottom
                        anchors.horizontalCenter: parent.horizontalCenter
                        width: 3
                        height: (parent.height * value) / 100
                        color: "#448bbe"

                        Rectangle
                        {
                            color: "#448bbe"
                            radius: width / 2
                            width: 8
                            height: 8
                            anchors.top: parent.top
                            anchors.horizontalCenter: parent.horizontalCenter
                        }
                    }
                    Text
                    {
                        y: parent.height + 3
                        anchors.horizontalCenter: parent.horizontalCenter
                        text: label
                    }
                }
        }
    }
}

Снимок экрана

enter image description here

0 голосов
/ 03 декабря 2018

Поскольку ОП не указал, что он хочет найти решение для приложения на основе виджетов Qt [он сделал после редактирования вопроса], ответ:

Создайте свой собственный класс QWidget.Переопределите paintEvent и закрасьте его с помощью QPainter.Я думаю, что есть много примеров, если вы Google это.

0 голосов
/ 03 декабря 2018

Вы можете выбрать Custom QQuickPaintedItem , здесь вы можете найти Пример .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...