zhuzichu520 / FluentUI

FluentUI for QML
MIT License
3.48k stars 456 forks source link

使用FluChart时遇到的问题 #407

Open liaozhangsheng opened 8 months ago

liaozhangsheng commented 8 months ago

c++端传递来的QColor无法在chart的borderColor或backgroundColor使用。代码如下:

FluWindow{
    width: 800
    height: 600

    DataProvider{
        id: myData
    }
    FluArea{
        width: 600
        height: 450
        paddings: 10
        Layout.topMargin: 20
        FluChart{
            anchors.fill: parent
            chartType: 'line'
            chartData: { return {
                    labels: myData.labels,
                    datasets: [{
                            label: 'My First Dataset',
                            data: myData.data,
                            fill: false,
                            borderColor: myData.randomColor,
                            tension: 0.1
                        }]
                }
            }
            chartOptions: { return {
                    maintainAspectRatio: false,
                    title: {
                        display: true,
                        text: 'Chart.js Line Chart - Stacked'
                    },
                    tooltips: {
                        mode: 'index',
                        intersect: false
                    }
                }
            }
        }
    }
}
QColor DataProvider::randomColor() const
{
    int r = QRandomGenerator::global()->bounded(256);
    int g = QRandomGenerator::global()->bounded(256);
    int b = QRandomGenerator::global()->bounded(256);
    return QColor(r, g, b);
}

......

Q_PROPERTY(QColor randomColor READ randomColor CONSTANT)

运行后报错:

qrc:/qt/qml/FluentUI/JS/Chart.js:2313: TypeError: Type error

但是传字符串可以正常显示。

zhuzichu520 commented 8 months ago

你可以尝试一下传一个funcation,比如funcation(){return myData.randomColor}

liaozhangsheng commented 8 months ago

你可以尝试一下传一个funcation,比如funcation(){return myData.randomColor}

还是不行欸,报了一样的错误。

不过我发现如果传一个存Color的List,用下标访问倒是可以显示,有点奇怪

zhuzichu520 commented 8 months ago

额,我看了一下qrc:/qt/qml/FluentUI/JS/Chart.js:2313: TypeError: Type error,估计是在QML中无法创建一直QColor对象。。可以在C++层把QColors转成String给QML用~。。。