gpt4 book ai didi

qt - 在没有 Canvas 的QML中绘制虚线圆

转载 作者:行者123 更新时间:2023-12-04 12:58:40 27 4
gpt4 key购买 nike

我想绘制一个虚线圆,其半径将根据变量而增大或缩小。我只找到基于Canvas的解决方案:Qt (QML) Dashed Circle

我没有找到其他解决方案,我感到有些惊讶。恐怕Canvas解决方案会消耗太多资源。还有其他实用方法吗?

最佳答案

如果您不想使用Canvas,另一种方法是使用QQuickPaintedItem自己绘制一个圆圈。实现看起来像这样:

破折号

#ifndef DASHCIRCLE_H
#define DASHCIRCLE_H

#include <QObject>
#include <QQuickPaintedItem>
#include <QPainter>

class DashCircle : public QQuickPaintedItem
{
Q_OBJECT
public:
explicit DashCircle(QQuickItem *parent = nullptr);

virtual void paint(QPainter *painter);
};

#endif // DASHCIRCLE_H


dashcircle.cpp:

#include "dashcircle.h"

DashCircle::DashCircle(QQuickItem *parent) : QQuickPaintedItem(parent)
{

}

void DashCircle::paint(QPainter *painter)
{
painter->setPen(QPen(Qt::DashLine));
painter->drawEllipse(0, 0, width() - 1, height() - 1);
}


寄存器类型:

qmlRegisterType<DashCircle>("Custom", 1, 0, "DashCircle");


在qml中创建:

DashCircle {
x: 50
y: 50
width: 50
height: 50
}


结果:

circle

关于qt - 在没有 Canvas 的QML中绘制虚线圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51358032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com