FAQ Qt
FAQ QtConsultez toutes les FAQ
Nombre d'auteurs : 26, nombre de questions : 298, dernière mise à jour : 15 juin 2021
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.
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.
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 :
#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 :
#include
<QStyle>
#include
<QDesktopWidget>
window->
setGeometry(
QStyle
::
alignedRect(
Qt
::
LeftToRight,
Qt
::
AlignCenter,
window->
size(),
qApp
->
desktop()->
availableGeometry()
));
Lien : Comment récupérer la résolution d'écran de l'utilisateur ?