我有两个问题。
paint()
QGraphicsItem
和paintEvent()
个QWidget
API之间有什么区别?
我正在开发一个计时器类GUI,所以我每隔100毫秒用嵌入式linux板上的paint()
API更新屏幕。它几乎消耗了所有的CPU。知道如何防止这种情况吗?
或者还有其他方法可以做这个简单的图形吗?
QGraphicsScene
,每个QGraphicsView
都有自己的/****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*****/
......
。如何从MainWindow更新单个视图。以下是我目前如何执行此操作的代码:
typedef long long T;
class SomeClass
{
T var;
//...
};
typedef int A;
typedef T B;
硬件:TI-AM3354
答案 0 :(得分:2)
$query = "SELECT * FROM members WHERE first_name LIKE '%$searchTerm%' OR
last_name LIKE '%$searchTerm%' OR
date LIKE '%$searchTerm%'";
$results = mysqli_query ($db_connect, $query)
or die (mysqli_error (db_connect));
if (mysqli_num_rows ($results) >= 1) {
$record = "";
while ($row = mysqli_fetch_array ($results)) {
include "result.php";
} echo $record . "<hr />$search_form</main>";
} else {
echo "<h1>0 Matching Records</h1><hr />$search_form";
};
是一个通用事件处理程序,由Qt调用绘制一个小部件,通常是整个小部件,但有时可以通过尊重QPaintEvent的region和rect属性来优化。paintEvent()
。它通常不会被调用所有项目,QGraphicsView在绘制项目之前会进行各种检查,例如:确保该项目在视口中而不被其他项目隐藏,等等。根据您发布的代码,我看到两个优化:首先,不要为每个项目单独运行QTimer,而是为整个场景运行一个计时器。现在,您的代码每100毫秒触发N次重新绘制,而不是单个重绘。此外,更新商品的属性,让他们自己调用QGraphicsItem::update() ,如果属性实际更改,而不是无条件地更新整个场景。