## QtQuick开发需要C++基础和JS基础
* 掌握必要的C++基础是学习和使用QtQuick框架的重要基石
## QCustomPlot能做什么
* 可以在QWidget大放异彩,绘制各种图表和曲线
* 也可以在QtQuick大展拳脚
## 基于QtQuick的QCustomPlot实现
* 继承QQuickPaintedItem类 实现绘制
## 效果图
![kline](http://qtddui.b0.upaiyun.com/gitdir/blog/charts/kline.png)
![colormap](http://qtddui.b0.upaiyun.com/gitdir/blog/charts/colormap.png)
![barchart](http://qtddui.b0.upaiyun.com/gitdir/blog/charts/barchart.png)
![bar](http://qtddui.b0.upaiyun.com/gitdir/blog/charts/bar.png)
```
class DDuiBasePlotItem : public QQuickPaintedItem
{
Q_OBJECT
public:
DDuiBasePlotItem( QQuickItem* parent = 0 );
virtual ~DDuiBasePlotItem();
void paint( QPainter* painter );
virtual void initCustomPlotUI(){}
QCustomPlot *getPlot();
protected:
virtual void hoverMoveEvent(QHoverEvent *event);
virtual void mousePressEvent( QMouseEvent* event );
virtual void mouseReleaseEvent( QMouseEvent* event );
virtual void mouseMoveEvent( QMouseEvent* event );
virtual void mouseDoubleClickEvent( QMouseEvent* event );
virtual void wheelEvent( QWheelEvent *event );
void routeMouseEvents( QMouseEvent* event );
void routeWheelEvents( QWheelEvent* event );
public slots:
void graphClicked( QCPAbstractPlottable* plottable );
void onCustomReplot();
void updateCustomPlotSize();
private:
QCustomPlot* m_CustomPlot;
};
```
```
///
/// \brief DDuiCTPWidget::connectQuoteServer
/// 初始化
///
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qmlRegisterType<CustomPlotItem>("CustomPlot", 1, 0, "CustomPlotItem");
qmlRegisterType<CustomPlotBarItem>("CustomPlot", 1, 0, "CustomPlotBarItem");
qmlRegisterType<CustomKLine>("CustomPlot", 1, 0, "CustomKLine");//CustomColorMap
qmlRegisterType<CustomColorMap>("CustomPlot", 1, 0, "CustomColorMap");
qmlRegisterType<CustomBarChart>("CustomPlot", 1, 0, "CustomBarChart");
QQmlApplicationEngine engine;
engine.load(QUrl(QLatin1String("qrc:/main.qml")));
return a.exec();
}
```
QML方面实现
```
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
import QtQuick.XmlListModel 2.0
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("QCustomPlot在QML中使用")
SwipeView {
id: swipeView
anchors.fill: parent
currentIndex: tabBar.currentIndex
interactive: false
DDRubberband{
}
PlotView {
}
CustomPlotBar{
}
CustomKLine{
}
CustomColorMap{
}
CustomBarCharts{}
Page {
Label {
text: qsTr("This is implementation of http://www.qcustomplot.com/index.php/support/forum/172\n" +
"Adding random data on 500 ms tick to plot")
anchors.centerIn: parent
}
XmlListModel {
id: xmlModel
source: "qrc:/combox.xml"
query: "/rss/item"
XmlRole { name: "title"; query: "title/string()" }
XmlRole { name: "pubDate"; query: "pubDate/string()" }
}
ComboBox {
textRole: "title"
model: xmlModel
}
}
}
footer: TabBar {
id: tabBar
currentIndex: swipeView.currentIndex
TabButton {
text: qsTr("RubberBand")
}
TabButton {
text: qsTr("Plot")
}
TabButton {
text: qsTr("Bar")
}
TabButton {
text: qsTr("KLine")
}
TabButton {
text: qsTr("ColorMap")
}
TabButton {
text: qsTr("BarChart")
}
TabButton {
text: qsTr("Info")
}
}
}
```
## 注意事项
* 需要QCustomPlot源码
* 需要自己继续基于例子进行开发自己需要的图表
## 应用场景
* 方便QCustomPlot业务移植到QtQuick应用程序上面
## 有问题反馈
在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流
* 邮件(373955953#qq.com, 把#换成@)
* QQ: 39559539234
* QQ群:312125701
* github: [@寒山-居士](https://github.com/toby20130333)
## 关于作者
```javascript
var duoduozhijiao = {
nickName : "寒山-居士",
site : "http://www.heilqt.com",
blog : "http://blog.heilqt.com"
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
基于QtQuick的QCustomPlot实现 (QML 实现)
共17个文件
qml:7个
cpp:3个
h:2个
需积分: 50 122 下载量 182 浏览量
2019-08-02
16:08:00
上传
评论 6
收藏 214KB 7Z 举报
温馨提示
QCustomPlot 默认是QWidget实现,该demo可以很好的学习QWidget如何转换qml,详情查看博客 https://blog.csdn.net/CLinuxF/article/details/98208351
资源推荐
资源详情
资源评论
收起资源包目录
QtQuickQCustomPlot.7z (17个子文件)
QtQuickQCustomPlot
combox.xml 411B
PlotView.qml 264B
DDRubberband.qml 2KB
qmlplot.h 2KB
main.qml 2KB
qcustomplot.h 256KB
qmlplot.pro 1KB
CustomBarCharts.qml 278B
CustomKLine.qml 272B
main.cpp 822B
qcustomplot.cpp 1.05MB
README.md 5KB
qmlplot.cpp 19KB
qml.qrc 391B
CustomColorMap.qml 275B
CustomPlotBar.qml 309B
qtquickcontrols2.conf 309B
共 17 条
- 1
资源评论
Fu_Lin_
- 粉丝: 3758
- 资源: 28
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功