2010-12-06 14 views
2

Dans mon code, je connecte la base de données MySql et les données de requête.
Je dessine une scène graphique en utilisant ces données.Problème de connexion Sql et d'interface graphique

Lorsque la connexion à la base de données renvoie la valeur false,
mon programme essaie de connecter la base de données avec (db.Open()).

Pendant ce temps, gui est verrouillé.
Avez-vous une idée sur ce problème?
Comment puis-je le résoudre?

+0

pas même assez près d'assez d'informations pour vous aider. –

+3

utiliser un fil d'arrière-plan .. – joni

+0

Pouvez-vous expliquer un fil de fond? – tugba

Répondre

1

Pour résoudre ce problème, vous devrez créer une application multithread. Un processus peut avoir plusieurs threads qui ressemblent à des sous-processus parallèles au sous-processus principal (Slam me pour cette explication: P). Lisez here pour plus d'informations sur les threads.

Dans votre cas, vous devrez générer un thread qui, en arrière-plan, établit la connexion MySql (QT Doc indique "Une connexion ne peut être utilisée qu'à partir du thread qui l'a créé."), Récupère les données à partir du serveur et l'attire vers le widget que vous voulez. Au moment où le thread d'arrière-plan fait cela, le cycle d'exécution principal de votre application ne sera pas perturbé, et votre application ne cessera pas de répondre. Cependant, vous devrez implémenter un mécanisme qui garantit que seulement 1 Mysql-Data-Fetcher-Thread existe à la fois, sinon il deviendra chaotique (par exemple, plusieurs threads veulent accéder à la même zone de dessin, ce qui est impossible dans QT).

Sur le site de documentation QT existe un très bon section about threads et comment les implémenter dans QT. Vous devriez également consulter les liens externes si vous êtes nouveau dans la programmation des threads.