Я пытаюсь перемещать одно изображение в QGraphicsView каждую секунду, я пробовал четыре метода, но ни один из них не работал у меня.
1) Я использовал QTest, используя функцию QTest::qSleep(), но это вообще не сработало, потому что в приложении появляются две ошибки, я думаю, они должны быть с файлом .pro проекта.
2) Я использовал QThread во второй попытке, по крайней мере, QThread::sleep(), приложение запустилось, но изображение уже находится в последней позиции, которую я установил ранее. Я имею в виду, что сон не работает (работает несколько раз, но по-другому, после того, как цикл завершен и сон сработал внутри цикла, приложение несколько раз появляется на экране. Иногда зависает и не показывает приложение) .)
3) Я использовал одну функцию, которую пользователь опубликовал в другом вопросе, он сказал, что это альтернатива функции сна.
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;
}
}
Дело в том, что при каждом втором проходе изображение на кадре перемещается на следующую позицию, пока не достигнет предела, и перестает двигаться. Я не знаю, лучший ли способ сделать задержку, но мне нужно перемещать изображение каждую секунду, способ не имеет значения. Спасибо за чтение.