dimanche 8 mars 2015

An empty window pops up and steals focus each time an int is assigned using qrand() in Qt

I'm having a strange problem in a game I'm building in Qt where each time I generate I call qrand() (or rand(), I tried both), a separate tiny window pops up and steals focus from my game. I want to 'roll' a pair of dice every 2 seconds so I'm generating a number between 1 and 12. I'm using a QTimer object in a GameBoard custom widget constructor to call the public slot updateDice() that resets a private variable to a random number.



void GameBord::updateDice(){
dice_int = qrand()%12 +1;
repaint();
QCoreApplication::processEvents();
return;
}


and in my repaint()



...
dice_roll->clear();
dice_roll->setText(QString::number(dice_int));
...


where dice_roll is the label that displays what number the roll was for the player.


With the debugger I found that every time dice_int is assigned the window pops up. The weirdest part to me is that I have other random numbers generated and they don't cause this problem.


I know you can setAttribute so that the window comes up without activating, but I don't know where the window is coming from.


And if there is no solution to this problem, is there a way to set Focus on a widget so that it never changes? I tried Qt::StrongFocus but that doesn't help.


I'd be happy to post more code if you want it, and thanks in advance.





Aucun commentaire:

Enregistrer un commentaire