QML component which embeds one C++ classでアプリケーションを設計しようとしています。 私のクラスは以下の通りです:QMLコンポーネントでC++クラスを使用する方法
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回実施し、かつ回転させる必要があり、アニメーションやサイズ変更する必要があります。
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{/.../}
}
どれ例やヘルプ: は私がupdatePaintNode()を使用する必要がありますが、設計者(少なくともないコーダー)、私はトラブル混合言語を持っているよう... アイデアは私のQMLコードで持つことだと思います私のオブジェクトをQMLアプリケーションに実装する方法については、多くの助けになります!
2つの質問があります: 1)QQuickItemクラスがQQuickPaintedItemクラスより高速なのはなぜですか?最後の子は最初の子の子ですか? 2)もちろんC++コードを使用するつもりですが、QMLコードでどのように使用しますか? Ps:私はこのフォーラムでは新しいよ私はコメント部分で質問する必要があるかどうか分からない、もし私がすべきでないならごめんなさい! – TaiZzZ
第1の方法はOpenGLを使い、第2の方法はQPainterを使います。最初にアイテムはQPainterを使用してペイントされ、このイメージはシーングラフにOpenGLテクスチャとしてペイントされます。例は、[ここ](https://stackoverflow.com/documentation/qml/6509/creating-custom-elements-in-c/22330/creating-custom-elements-in-c#t=201706131403549080664)にあります。 – folibis