有没有办法初始化函数中的变量并保存其值以进行下一次函数调用?
我在qt中进行应用,我有一个功能与信号连接.我希望该函数中的变量在另一个变量达到目标后发生变化.这是该函数的主体:
void objekt::advance(int phase)
{
if(!phase) return;
QPointF location = this->pos();
if (int(location.x())==200 || int(location.x())==-200)
{
smijer=-smijer;
}
setPos(mapToParent(smijer,0));
}
Run Code Online (Sandbox Code Playgroud)
我将smijer变量定义为static int.但我不知道如何在程序启动时只初始化一次,以及如何在每次调用函数后保持其新值.
我在确定 的位置时遇到问题QGraphicsLineItem。我想相对地移动场景中的物品,所以我需要知道它们的位置。我的QGraphicsPixmapItem对象很少,我对它们没有问题,因为pixmapItem.pos()在场景坐标中给了我每个项目的真实位置。但是使用 QGraphicsLineItemsi 为每条线获得相同的坐标 (0,0)。这是代码:
QGraphicsLineItem*line = new QGraphicsLineItem();
scene->addItem(line);
line->setLine(QLineF(0,VVR-i*(OH),HVR,VVR-i*(OH)));
Run Code Online (Sandbox Code Playgroud)
此代码在正确的位置绘制线条,但其坐标设置为(0,0)not (0,VVR-i*(OH))。
当订单项到达大于 VVR 的位置时,以下代码应将订单项移动 (VVR + OH)。但是由于所有行都有起始位置 (0,0),所以无论我把它们放在哪里,所有行都会同时移动。
QPointF current_pos = line->pos();
if (current_pos.y() >= VVR)
{
line->setPos(current_pos.x(),current_pos.y()-(VVR+(OH)));
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到 的真实(场景)坐标QGraphicsLineItem,因为我得到了QGraphicsPixmapItem谢谢!