Je n'ai jamais fait de GUI en C++ ... help me please :)

Signaler
Messages postés
73
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
17 janvier 2012
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour,

J'ai fait un programme de Bataille Navale en c++ assez complet niveau algorithme mais entièrement en console windows. Ca ne me gêne pas trop mais c'est vrai que c'est pas "évident" pour l'utilisateur de rentrer les coordonnées de ses bateaux et de ses attaques...

Je ne souhaite pas que tout le programme soit sur une superbe fenêtre mais juste que l'étape "placer le bateau" et "choisir une case à attaquer" se fasse par un onClick() sur un échiquier basique, rien de bien compliquer... pour les connaisseurs ^^

J'ai lu des tutos de QT mais je n'arrive pas à faire cela :
- le programme de base en invite de commande
- ouverture d'un échiquier de sélection (GUI) lorsqu'on est à l'étape "placer bateau"

c'est impossible de mélanger une console avec une fenêtre made by QT qui s'ouvre automatiquement et se ferme avec passage de coordonnées sur un évênement onClick() ?

Merci de votre aide si vous avez des pistes !



KJM

4 réponses

Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
Soit tu fais une fenêtre, soit tu fais une console, il faut choisir !

Ce que tu veux faire est néanmoins possible, mais c'est inutilement difficile. Pourquoi ne pas le faire entièrement en mode fenêtré ?

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
73
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
17 janvier 2012

Pourquoi ne pas le faire entièrement en mode fenêtré ?


Pour ne pas avoir à refaire toutes mes fonctions mais seulement rajouter une fenêtre pour cliquer sur la case à attaquer au bon moment

PS. Comment on récupère les fonctions complètes listées sur http://0217021.free.fr/phptool/doc/ ? merci

KJM
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
Si tu ton programm est bien fait, changer le mode de visionnage (console ou fenêtre) devrait être aisé.

Si tu n'avais pas prévu le cas (si tu n'a pas centralisé en un seul point de ton application les interactions utilisateurs), alors tu va devoir utiliser des astuces pas terribles...

L'une des solutions consiste a demander à ton application fenetrée de manier l'application console. Tu peux émuler une console en fenetré et donc faire ce que tu veux. C'est sale et je le déconseille, mais c'est une solution rapide à ton problème.

Tu peux utiliser QProcess pour faire cela.

Pour toute question non relative à ton sujet, je t'invite à me contacter en message privé.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Salut,

Je ne connais pas QT, mais en tout cas Windows gère ça dans tous les sens : Tu peux faire une appli console avec fenêtre et une appli fenêtrée avec une console fort simplement.

Pour avoir une console depuis une appli fenêtrée -> AllocConsole.

Et pour avoir une fenêtre dans une appli console, il faut faire la même chose que dans une appli fenêtrée.

Bon, si on veut de la réactivité côté fenêtre et côté console, faut avoir une boucle de message pour la fenêtre et un "scanf" pour la console en même temps. Ce qui fait deux appels bloquants, impossible sans 2 threads. Ou utiliser PeekMessage plutôt que GetMessage pour les messages. Mais utiliser 2 threads serait plus propres.

Mais dans ton cas, je suis même pas sûr que tu ais besoin d'offrir la possibilité d'interagir sur la fenêtre et la console en même temps.