Bonsoir
Je travaille actuellement sur un projet top secret de la plus haute importance et j'ai choisi SFML 2.0 pour m'accompagner tout au long de son développement. Soit dit en passant, un grand bravo à ses développeurs pour le travail accompli dans tous les domaines, tant le résultat est bien chiadé !
Voici mon problème. Je dispose d'une fenêtre créée via Qt 4, intégrant un widget OpenGL sur base SFML. Dans cette fenêtre, j'ai donc un rendu 3D (moteur maison), et je viens d'y intégrer une petite console style Quake. Je récupère tous les évènements possibles dans cette fenêtre, notamment concernant le clavier. Jusque là, l'évènement KeyPressed me suffisait. Mais avec l'implantation de la console, j'ai besoin de récupérer l'événement TextEntered. Or, je n'y parviens point ! En gros chaque touche pressée produit juste un KeyPressed... Voici le code impliqué :
void GLout::__GLLoop::exec() {
sf::Event e;
while (_gl_out->pollEvent(e))
if (e.type == sf::Event::Closed)
this->stop();
else if (e.type == sf::Event::Resized)
_gl_out->resize(e.size.width, e.size.height);
else
__parseEvent(e);
_gl_out->repaint();
_curr_loop++;
}
void GLout::__GLLoop::__handleKeyboard(const sf::Event &e) {
if (e.type == sf::Event::TextEntered) {
console() << "te\n";
if (_gl_out->getGLConsole()->IsOpen()) {
_gl_out->getGLConsole()->KeyboardFunc(e.text.unicode);
}
}
if (e.type == sf::Event::KeyPressed) {
console() << "kp\n";
if (e.key.code == sf::Keyboard::Quote)
_gl_out->getGLConsole()->ToggleConsole();
if (!_gl_out->getGLConsole()->IsOpen())
_busclient.broadcast<sf::Event::KeyEvent>(CHANNEL_0, TYPE_EVENT_KEYPRESSED, e.key, PRIORITY_HIGH);
}
if (e.type == sf::Event::KeyReleased)
_busclient.broadcast<sf::Event::KeyEvent>(CHANNEL_0, TYPE_EVENT_KEYRELEASED, e.key, PRIORITY_HIGH);
}
void GLout::__GLLoop::__parseEvent(const sf::Event &e) {
__handleKeyboard(e);
__handleMouse(e);
__handleJoystick(e);
}
Si quelqu'un a une idée je suis preneur...
Merci