У меня проблема с QMouseEvent:
void Gioco::gioco_G1()
{
QMouseEvent *mouse = new QMouseEvent;
bool stato = false;
do
{
if (mouse->KeyPress() == Qt::MouseButton::LeftButton) {
qDebug()<<"entra nell'if";
if (img_mano1G1 -> isUnderMouse()) {giocata_G1 = manoG1[0]; stato = true;}
else if (img_mano2G1 -> isUnderMouse()) {giocata_G1 = manoG1[1]; stato = true;}
else if (img_mano3G1 -> isUnderMouse()) {giocata_G1 = manoG1[2]; stato = true;}
}
} while (stato == false); //repeat until I enter an if
}
Я создал сцену и вставил в нее QGraphicsPixmapItem. Теперь я хочу ввести «если», когда я нажимаю на указанный QGraphicsPixmapItem.
Например, когда я нажимаю на img_manoG1, я хочу ввести первое «если».
Как я могу сказать программе остановиться и дождаться ввода мыши?
Я новичок в Qt, и я впервые использую объекты, поэтому я делаю много логических ошибок, поэтому использование QStateMachine - это большая проблема...
Это единственный способ сделать это? Я пытаюсь объяснить свою программу:
Я хочу создать карточную игру, и в предыдущей версии я использовал старую графическую библиотеку с такой последовательностью команд:
-> print cards on the scene
-> wait for a mouse input (with a do-while)
-> if(isMouseClick(WM_LBUTTONDOWN))
-> if(mouse position is on the first card)
-> select that card. So i wish to do the same thing with QGraphics.
Таким образом я говорю программе:
-> print cards
-> wait for a mouse event
-> print the card that I've selected with that event.
Теперь я хочу изменить графику программы и представил QGraphics. Я создал сцену и распечатал на ней «карточку» всех объектов, так что теперь я хочу сказать программе:
-> print the object and wait the mouse input
-> if a card is to selected with the left clik
-> print that card in scene, wait 1/2 second and go ahead with the program
Проблема в том, что я использую for
от 1 до 20 (я должен запустить это 20 раз за матч). Я пытался запустить программу со случайным воспроизведением G1 и COM, но приложение зависает до последнего выполнения for
, и я печатаю на сцене только последнюю конфигурацию карт. Это причина, потому что ранее я сказал, что хочу, чтобы программа остановилась...
Можно ли обойтись без QStateMachine? Просто сказать ему: «пауза», распечатать эту ситуацию, дождаться мышки и вперед?