gpt4 book ai didi

c++ - 每秒在 QGraphicsView 中移动图像

转载 作者:太空宇宙 更新时间:2023-11-04 13:52:38 26 4
gpt4 key购买 nike

我试图每秒在 QGraphicsView 中移动一张图像,我尝试了四种方法,但没有一种对我有用。

1) 我使用了 QTest,使用函数 QTest::qSleep() 但这根本不起作用,导致应用程序中出现两个错误,我认为必须与项目的 .pro 文件有关。

2) 我在第二次尝试中使用了 QThread,至少 QThread::sleep(),应用程序运行,但图像已经在我之前设置的最后位置。我的意思是, sleep 不工作(有时工作,但以不同的方式,一旦循环完成并且 sleep 在循环内工作,应用程序有时会出现在屏幕上。有时卡住并且不显示应用程序.)

3) 我使用了一个用户在其他问题中发布的功能,他说这是 Sleep 功能的替代品。

QTime dieTime= QTime::currentTime().addSecs(1);
while( QTime::currentTime() < dieTime )
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);

4) 我也使用了 QWaitCondition,这是一个与其他选项类似的替代方案。

QMutex dummy;
dummy.lock();
QWaitCondition waitCondition;
waitCondition.wait(&dummy, waitTime);

我读了一些关于 QTimer 的东西,但我还不知道如何使用它,我是 QT 的初学者,我只知道基础知识。我所做的一切都是在 while 循环中进行的。

我需要实现的代码:

void Window::start(PilaD *caminoGato,PilaD *caminoRaton){
/*
YOU DONT NEED TO UNDERSTAND THIS CODE
Nodo *recorGato,*recorRaton;
recorGato = new Nodo();
recorRaton = new Nodo();
recorGato = caminoGato->tope;
recorRaton = caminoRaton->tope;
By The Way, for you to understand, recorGato is a class, this class have two variable row and col
*/


QPixmap *icon = new QPixmap(list.at(2));
QGraphicsPixmapItem *gato = new QGraphicsPixmapItem(*icon);
scene->addItem(gato);

while(recorGato!=NULL){
//ALL I TRIED, I PLACE IT HERE, INSIDE THE LOOP
gato->setPos(recorGato->col*icon->width()+200,recorGato->row*icon->height()+100);
recorGato = recorGato->pre;
}
}

事情是,每第二次通过,框架上的图像,移动到下一个位置,直到他到达一个极限,然后停止移动。我不知道延迟是否是最好的方式,但我需要每秒移动图像,方式并不重要。感谢阅读。

最佳答案

尝试使用带槽的 QTimer。我只写了一个 sudo 代码。

void MyClass::myFunc()
{
mTimer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(slotMoveImage()));
mTimer->start(1000); // set timeout for 1 second
}


/***Slot will look something like this**/

void MyClass::slotMoveImage()
{
// Move image and restart the timer. Do not restart if we don't want to move further
img->setPos(img.rect().x() + 200, img.rect.y()+100);
if(/* not some condition */)
mTimer->start(1000); // again start the timer
}

关于c++ - 每秒在 QGraphicsView 中移动图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22876426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com