我們需要知道更多,什麼不會發生?窗口是否出現?線條沒有繪製?同時嘗試這個示例代碼,如果你想:)編輯:更新顯示更新。
#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是隱含共享...)
QPainterPath p = gPath.path();
p.lineTo(0, 42);
gPath.setPath(p);
動畫
看來,你正在嘗試做某種動畫/即時更新。在Qt中有這個完整的框架。在最簡單的形式中,您可以繼承QGraphicsPathItem的子類,重新實現其advance()插槽以自動從運動中獲取下一個點。剩下的唯一事情就是用所需的頻率調用s.advance()。
http://doc.trolltech.com/4.5/qgraphicsscene.html#advance
請張貼相關的片段,這將有助於我們理解你到目前爲止做了什麼。 – 2009-07-23 18:15:42