2010-12-04 37 views
1

Est-il possible d'obtenir la frameGeometry correcte pour une fenêtre pour laquelle show() n'a pas encore été appelée? En général, il semble que frameGeometry() == geometry() avant une fenêtre est affichée à l'écran.Comment obtenir frameGeometry sans afficher la fenêtre

Je ne veux pas appeler show() d'abord, puis déplacer car cela provoque un scintillement perceptible dans l'affichage. De toute évidence, je peux juste prendre une fenêtre (le premier que je crée) et se souvenir de la taille des bordures et autres joyeusetés, mais je ne peux vraiment pas croire qu'il n'y a pas de moyen QT standard pour le faire. Est-ce qu'il y a un? J'utilise Qt 4.6.3, Windows 7, (K) Ubuntu 10.04.

+0

Je doute qu'il existe un moyen indépendant de la plate-forme de dire à la géométrie du système de fenêtre (qui échappe au contrôle de Qt) d'un widget qui n'a pas encore été créé dans le système de fenêtrage. –

+0

@Frank, cela peut être vrai, mais Qt est censé me donner l'indépendance de la plate-forme. Et juste de l'utilisation d'autres applications, il semble que toutes les plates-formes ont un moyen de prédire la géométrie de la fenêtre (en ce sens que les fenêtres sont positionnées avant d'apparaître sur l'écran). –

Répondre

0

Vous pouvez essayer de déplacer votre fenêtre bien à l'extérieur de la zone de bureau, puis de la montrer. Après avoir obtenu les informations sur la géométrie du cadre, vous pouvez le déplacer vers la position appropriée, ce qui devrait agir de la même manière que le montrer dans cette position.

+0

Cela semble fonctionner sous Windows, mais sur KDE, la fenêtre est toujours déplacée à portée. Je ne sais pas si QT fait cela ou KDE lui-même. –