我想绘制一个虚线圆,其半径将根据变量增大或缩小.我只找到了一个Canvas
基于解的方案:Qt(QML)Dashed Circle
我没有找到另一个解决方案,我有点惊讶.我担心Canvas
解决方案会占用太多资源.还有其他实用的方法吗?
如果你不想使用Canvas,另一种方法是自己使用QQuickPaintedItem
和绘制一个圆圈.实现看起来像这样:
dashcircle.h
#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
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
注册类型:
qmlRegisterType<DashCircle>("Custom", 1, 0, "DashCircle");
Run Code Online (Sandbox Code Playgroud)
在qml中创建:
DashCircle {
x: 50
y: 50
width: 50
height: 50
}
Run Code Online (Sandbox Code Playgroud)
结果:
归档时间: |
|
查看次数: |
181 次 |
最近记录: |