【发布时间】:2015-05-25 05:54:53
【问题描述】:
我有两个问题。
paint()的QGraphicsItem和paintEvent()的QWidgetAPI 之间有什么区别?我正在开发一个类似于 GUI 的计时器,因此我在嵌入式 linux 板上使用
paint()API 每 100 毫秒更新一次屏幕。它几乎消耗了所有的CPU。知道如何防止这种情况吗?
或者有没有其他方法来做这个简单的图形?
- 我还有多个
QGraphicsScene,每个都有自己的QGraphicsView,在网格布局中。如何从 MainWindow 更新单个视图。
以下是我目前如何执行此操作的代码:
/****SCENE 1*****/
scene_1 = new QGraphicsScene();
scene_1->setBackgroundBrush(Qt::black);
ui->gv_1->setScene(scene_1);
ui->gv_1->setRenderHint(QPainter::Antialiasing);
circle = scene_1->addEllipse(50, 80, 150, 150, outlinePen, darkGreyBrush);
textSlotNo = scene_1->addText("1", QFont("Arial", 30) );
textSlotNo->setDefaultTextColor(Qt::gray);
textSlotNo->setPos(0,50);
MyItem *item_1 = new MyItem(1);
scene_1->addItem(item_1);
item_1->timer = new QTimer();
connect(item_1->timer, SIGNAL(timeout()),scene_1, SLOT(update()));
item_1->timer->start(100);
/****SCENE 2*****/
......
硬件:TI-AM3354
【问题讨论】:
-
还添加每 100 毫秒更新项目的代码。每个项目都有一个计时器当然效率不高,即使没有任何改变,看起来你也会重新绘制所有内容。如果项目的属性发生变化,请尝试简单地更新项目,并且根本不要手动调用 update()。
-
我确实每 100 毫秒更新一次场景。我画了一条不同起始位置的圆弧,从而使它好像在旋转。我还在场景中使用 drawText() 更新时间。在每个场景中不使用 QTimer 还有其他方法吗?
-
我只用了一个定时器,CPU就被那个定时器完全消耗了。
-
你有多少场景?
-
我有 10 个场景要更新。现在只测试一个。
标签: qt paint qgraphicsitem paintevent