何が起こっていないのですか?ウィンドウはまったく表示されますか?線は描かれていませんか?それまでの間、このサンプルコードを試してみてください:)編集:更新を表示するように更新されました。
#include ...
class QUpdatingPathItem : public QGraphicsPathItem {
void advance(int phase) {
if (phase == 0)
return;
int x = abs(rand()) % 100;
int y = abs(rand()) % 100;
QPainterPath p = path();
p.lineTo(x, y);
setPath(p);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsScene s;
QGraphicsView v(&s);
QUpdatingPathItem item;
item.setPen(QPen(QColor("red")));
s.addItem(&item);
v.show();
QTimer *timer = new QTimer(&s);
timer->connect(timer, SIGNAL(timeout()), &s, SLOT(advance()));
timer->start(1000);
return a.exec();
}
あなたはこのような何かを取得する必要があります:
パスを後に更新されるコースのいずれかのQGraphicsPathItem
缶に。あなたはそれがいるようだアニメーション
QPainterPath p = gPath.path();
p.lineTo(0, 42);
gPath.setPath(p);
(私はQPainterPathが暗黙のうちに共有されているかどうかわからないんだけど...)、すべてのパスをコピーによるパフォーマンスヒットを避けるために、どこかの元画家の道を残しておきたいかもしれません何らかのアニメーション/オンザフライ更新をしようとしています。 Qtにはこのためのフレームワークが全部あります。最も単純なフォームでは、QGraphicsPathItemをサブクラス化し、advance()スロットを再実装して、モーションから次のポイントを自動的に取得します。そうするために残された唯一のことは、必要な頻度でs.advance()を呼び出すことです。
http://doc.trolltech.com/4.5/qgraphicsscene.html#advance
これまでに行ったことを理解するのに役立ちます。 –