首页| 论坛| 消息

标题:C++中使用quickshapes模块的私有接口
作者:lieber
日期:2023-05-07 13:40
内容:

小弟目前在开发一个图形的功能,界面采用qml制作,几何算法用C++编写。
但是要把曲线结果显示出来的时候要传一堆参数到qml里面去,于是乎试了自定义的QQuickItem::updatePaintNode,但是效果一般。最近看到私有接口的使用,感觉难度会低一点,结果显示不出来。
需要说明的是,界面由于缩放,用QQuickPaintedItem会糊的很。骚操作的代码如下,还请论坛的各位大哥指点指点#include "QmlElementsItem.h"
#include
#include
QmlElementsItem::QmlElementsItem(QQuickItem *parent)
: QQuickItem(parent)
{
setFlag(ItemHasContents);
setAntialiasing(true);
}
void QmlElementsItem::setData(const ContourElements &elements)
{
QQuickShape* shape = new QQuickShape(this);
for (int i = 0; i < elements.size(); ++i) {
QQuickShapePath* path = new QQuickShapePath(shape);
path->setStrokeColor(QColor(255, 0, 0));
path->setStrokeWidth(3.0);
QQuickShapePathPrivate* path_p = QQuickShapePathPrivate::get(path);
switch (elements->Type()) {
case 1: {
QSharedPointer segment = elements.dynamicCast();
path->setStartX(segment->GetStart().X());
path->setStartY(segment->GetStart().Y());
QQuickPathLine* line = new QQuickPathLine(path);
line->setX(segment->GetEnd().X());
line->setY(segment->GetEnd().Y());
path_p->_pathCurves.append(line);
break;
}
case 5: {
QSharedPointer bezier = elements.dynamicCast();
path->setStartX(bezier->GetCurveP1().X());
path->setStartY(bezier->GetCurveP1().Y());
QQuickPathCubic* cubic = new QQuickPathCubic(path);
cubic->setX(bezier-&gt ..


#1 [lieber 05-07 17:26]
看了Qt的qtlocation部分源码,QQuickPath添加到QQuickShape的接口用错了,此贴终结。
不得不说QtQuick做界面是真的方便快捷了很多
#2 [liulin188 05-08 11:26]
20091001753兄弟看到你这个帖子又该纠结了

回复 发表
主题 版块