[英]How to use a C++ class in a QML component
我正在嘗試在嵌入一個 C++ 類的QML 組件上設計一個應用程序。 我的課程如下:
class Fleche : public QQuickPaintedItem // Fleche = arrow
{
public :
Fleche();
~Fleche();
protected :
QPainterPath arrow;
private :
void paint(QPainter *painter){
// Draw
arrow.moveTo(50,50);
arrow.lineTo(0,0);
arrow.cubicTo(20,100/3,20,2*100/3,0,100);
arrow.closeSubpath();
// Paint
QLinearGradient gradient(0, 0, 0, 100);
gradient.setColorAt(0.0, Qt::white);
gradient.setColorAt(1.0, Qt::darkBlue);
QBrush fill(gradient);
painter->setBrush(fill);
painter->setRenderHint(QPainter::Antialiasing);
painter->drawPath(arrow);
}
};
這個項目應該在我的 QML 代碼中實現 4 次,並且需要旋轉、動畫和調整大小。 我想我必須使用updatePaintNode()但作為設計師(至少不是編碼員),我在混合語言時遇到了麻煩......這個想法是在我的 QML 代碼中:
Fleche {
id : arrowNumberX // X is from 0 to 3
width : 0.1 * parent.width
height : 0.15 * parent.height
z : 1
rotation : X * 90
MouseArea{ /.../}
SequentialAnimation{/.../}
}
關於如何在我的 QML 應用程序中實現我的對象的任何示例或幫助都會對我有很大幫助!
更好的主意是使用 Canvas - http://doc.qt.io/qt-5/qtquick-canvas-example.html ,您將獲得更小更干凈的代碼。
您可以創建名為 Fleche.qml 的新組件,並在您想要的任何地方使用它(旋轉、動畫和可調整大小,...)
您至少有 3 種方法來實現您自己的 QML 項目(從快到慢排序)。
QQuickItem
類並覆蓋QQuickItem::updatePaintNode()QQuickPaintedItem
類並覆蓋QQuickPaintedItem::paint()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.