매초 QGraphicsView에서 하나의 이미지를 이동하려고하는데 4 가지 방법을 시도했지만 그 중 아무 것도 작동하지 않았습니다.QGraphicsView에서 초당 이미지 이동
1) 나는 QTest :: qSleep() 함수를 사용하여 QTest를 사용했다. 그러나 이것은 전혀 작동하지 않았기 때문에 두 개의 오류가 응용 프로그램에 나타나기 때문에 프로젝트의 .pro 파일과 같아야한다고 생각한다.
2) 두 번째 시도 인 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;
}
}
것은 제 2 패스, 프레임의 이미지, 그는 한계에 도달 할 때까지 다음 위치로 이동하고, 이동을 중지 할 때마다 그 . 지연을 만드는 것이 가장 좋은 방법인지는 모르지만 매초마다 이미지를 이동해야합니다. 길은 중요하지 않습니다. 읽어 주셔서 감사합니다.