FAQ Qt FAQ Qt Creator FAQ PyQt & PySide

FAQ QtConsultez toutes les FAQ

Nombre d'auteurs : 26, nombre de questions : 298, dernière mise à jour : 26 juillet 2017 

 
OuvrirSommaireModulesQt GUI et Qt WidgetsSystèmes d'affichageGestion des fenêtres

Qt permet, comme tous les frameworks gérant les GUI, la création de fenêtres modales (bloquant l'accès aux autres fenêtres du programme) et amodales (indépendantes des autres fenêtres du programme). La classe de base gérant les boîtes de dialogue est QDialog. Celle-ci gère le mode modal ou amodal de la fenêtre à partir des méthodes suivantes :

  • bool isModal () const : permet de savoir si la boîte de dialogue est modale ou pas ;
  • void setModal (bool modal) : permet de définir le mode d'affichage de la boîte de dialogue (par défaut une boîte de dialogue Qt est amodale) ;
  • int exec() : force l'affichage de la boîte de dialogue en mode modal (la valeur définie par setModal est ignorée) ;
  • void show() : force l'affichage de la boîte de dialogue ;
  • void hide() : permet de cacher la boîte de dialogue.
Création de boîtes de dialogue modales et amodales
CacherSélectionnez

Remarque : tous les QWidget, et, par conséquent, leurs classes dérivées, peuvent être modales, en modifiant leurs propriétés windowModality à l'aide de la méthode setWindowModality(). Cependant, il est préférable de gérer ce type de boîte de dialogue à partir d'une QDialog et nom d'un QWidget.

Mis à jour le 7 mai 2012  par François Jaffré

Il est parfois pratique d'avoir son application qui démarre systématiquement au milieu de l'écran, peu importe la résolution sur laquelle elle est exécutée. Voici un petit code qui permet de faire cela :

 
Sélectionnez
#include <QtGui/QApplication>
#include <QtGui/QDesktopWidget>

int x = QApplication::desktop()->availableGeometry(this).width() /2 - frameSize().width()/2;
int y = QApplication::desktop()->availableGeometry(this).height() /2 - frameSize().height()/2;
move(x,y);

Il est important que la taille du widget soit définie de telle sorte que width() et height() soient valides.

Note : nous utilisons frameSize().width() plutôt que width() (idem pour la hauteur) dans le but que les décorations de fenêtre soient prises en compte dans le calcul (peut être différent selon le gestionnaire de fenêtres).

Note 2 : il vaut mieux aussi utiliser availableGeometry() plutôt que screenGeometry() qui permet de prendre en compte les éventuelles barres de tâches ou autres éléments à l'écran.

Note 3 : nous passons le widget en argument à la fonction availableGeometry() afin de gérer plusieurs écrans. La fonction retourne la géométrie de l'écran qui contient le widget passé en paramètre.

Il est également possible d'utiliser le snippet suivant :

 
Sélectionnez
#include <QStyle>
#include <QDesktopWidget>
     
window->setGeometry(
	QStyle::alignedRect(
		Qt::LeftToRight,
		Qt::AlignCenter,
		window->size(),
		qApp->desktop()->availableGeometry()
	));
Créé le 7 mai 2012  par Jonathan Courtois

Lien : Comment récupérer la résolution d'écran de l'utilisateur ?

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 - 2017 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.