Question

J'essaie d'écrire une interface autour de mon programme (en utilisant QT). Fondamentalement, j'ai une fenêtre principale, puis à certains points, il devrait "demander à l'utilisateur l'interaction". - J'utilise une boîte de dialogue pour cela.

Maintenant, lors de la lecture des fenêtres de dialogue, j'ai lu quelque part qu'une fenêtre de dialogue doit toujours avoir une fenêtre parent (la fenêtre principale que je suppose?). Maintenant, je trouve ce problème à mettre en œuvre dans mon projet - comme il semble que je dois changer de code, je ne souhaite pas changer.

Fondamentalement, le programme principal utilisé pour être une interface de ligne de commande. Et pour l'interaction de l'utilisateur, le programme ne créerait que une classe qui gère l'interaction d'affichage et de l'utilisateur. Dans la version d'interface graphique, je dérive de cette classe et la classe dérivée enveloppe simplement la fenêtre de la boîte de dialogue correcte.

Le problème est maintenant que dans l'interface de ligne de commande, rien ne parle de "Windows" ou même "QT". - L'application de la colonne vertébrale ne devrait rien savoir de qt. La communication est simplement comme ceci:

MAIN_WINDOW -> tells backbone to start acting upon X 
    -> BACKBONE -> asks for UI (opens class with DIALOG).

Maintenant, le problème est: Comment puis-je obtenir le pointeur Main_Window à travers la colonne vertébrale (qui ne connaît rien de qt) pour dialoguer? Est-ce un cas où je dois utiliser une variable singleton / globale pour Main_Window? J'espère qu'il y a un meilleur paradigme?

Était-ce utile?

La solution

Vous pouvez obtenir la fenêtre principale de votre application dans votre boîte de dialogue avec QApplication::instance()->activeWindow(), l'intention () est une fonction statique qui peut être appelée sans avoir accès à l'objet QaPllication (qui est réellement implémentée en interne comme singleton).

http://developer.qt.nokia.com/DOC / QT-4.8 / QAPPLICATION.HTML # ActiveWindow

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top