Qt+ECharts 表盘图

1.头文件,申明三个控件

QPushButton* mBtn = nullptr;
QWebView* view = nullptr;
QSlider* mSlider = nullptr;

2.控件布局

void RowNumber::initWin()
{
	mBtn = new QPushButton("OK", this);
	QHBoxLayout* h1 = new QHBoxLayout;
	h1->addWidget(mBtn);

	mSlider = new QSlider(Qt::Horizontal);
	mSlider->setRange(0, 100);
	QHBoxLayout* h2 = new QHBoxLayout;
	h2->addWidget(mSlider);
	 view = new QWebView(this);
	view->setContextMenuPolicy(Qt::NoContextMenu);
	view->load(QUrl("file:///C:/Users/99658/Desktop/echart/echarts-master/dist/zxp.html"));
	QHBoxLayout* h = new QHBoxLayout;

	h->addWidget(view);
	QVBoxLayout* v = new QVBoxLayout;
	v->addLayout(h2);
	v->addLayout(h1);
	v->addLayout(h);
	this->centralWidget()->setLayout(v);
}

3.数据交互

	connect(mBtn, &QPushButton::clicked, this, [=] {
		
		view->page()->mainFrame()->evaluateJavaScript("setData(60)");
		
		});
	connect(mSlider, &QSlider::valueChanged, this, [=] {
		int value = mSlider->value();
		QString methodJS = QString("setData(%1)").arg(QString::number(value));
		view->page()->mainFrame()->evaluateJavaScript(methodJS);
		
		});

5.echarts表的HTML内容

<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="echarts.min.js"></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 600px;height:600px;"></div>
    <script type="text/javascript">
	var myChart = echarts.init(document.getElementById('main'));

        myChart.setOption({
    series: [{
        type: 'gauge',
        progress: {
            show: true,
            width: 18
        },
        axisLine: {
            lineStyle: {
                width: 18
            }
        },
        axisTick: {
            show: false
        },
        splitLine: {
            length: 15,
            lineStyle: {
                width: 2,
                color: '#999'
            }
        },
        axisLabel: {
            distance: 25,
            color: '#999',
            fontSize: 20
        },
        anchor: {
            show: true,
            showAbove: true,
            size: 25,
            itemStyle: {
                borderWidth: 10
            }
        },
        title: {
            show: false
        },
        detail: {
            valueAnimation: true,
            fontSize: 80,
            offsetCenter: [0, '50%']
        },
        data: [{
            value: 50
        }]
    }]
});
function setData(newValue)
{
    var option = {
        series:
        [{
        data: [{
            value: newValue
        }]}
        ]
    };
    myChart.setOption(option);
}
function resizeDiv(newWidth,newHeight) {
    var myDiv = document.getElementById('main');
    myDiv.style.width = newWidth + "px";
    myDiv.style.height = newHeight + "px";
	myChart.resize();
}
    </script>
</body>
</html>

4.结果

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值