Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

Qt

Choisissez la catégorie, puis la rubrique :

Viadeo Twitter Facebook Share on Google+   
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QMdiArea

La classe QMdiArea fournit une zone dans laquelle des fenêtres multidocuments (MDI) peuvent être affichées. Plus d'informations...

#include <QMdiArea>

Voir la position dans l'arbre des classes.

Héritage

Hérite de QAbstractScrollArea.

Cette classe a été introduite dans Qt 4.3.

Description détaillée

La classe QMdiArea fournit une zone dans laquelle des fenêtres multidocuments (MDI) peuvent être affichées.

QMdiArea fonctionne essentiellement comme un gestionnaire de fenêtrage pour des fenêtres MDI. Par exemple, il dessine les fenêtres qu'il gère sur lui-même et les arrange sous forme de cascade ou de tuiles. QMdiArea est le plus souvent utilisé en tant que widget central d'une QMainWindow pour créer des applications MDI, mais peut également être placé dans une disposition quelconque. Le code suivant ajoute une zone MDI dans une fenêtre principale :

     QMainWindow *mainWindow = new QMainWindow;
     mainWindow->setCentralWidget(mdiArea);

À la différence des systèmes de fenêtrage pour les fenêtres de premier niveau, tous les drapeaux de fenêtre (Qt::WindowFlags) sont gérés par QMdiArea, à condition qu'ils soient gérés par le style de widget utilisé. Si un drapeau spécifique n'est pas géré par le style (par exemple, le drapeau WindowShadeButtonHint), il reste possible de replier la fenêtre avec showShaded().

Les sous-fenêtres dans QMdiArea sont des instances de QMdiSubWindow. Elles sont ajoutées à une zone MDI avec addSubWindow(). Il est courant de passer un QWidget, défini en tant que widget interne, à cette fonction, mais il est également possible de passer directement une QMdiSubWindow. La classe hérite de QWidget et s'utilise avec la même API qu'une fenêtre de premier niveau normale lors de la programmation. QMdiSubWindow possède de même un comportement spécifique aux fenêtres MDI. Voir la description de la classe QMdiSubWindow pour plus de détails.

Une sous-fenêtre devient active lorsqu'elle obtient le focus clavier ou lorsque setFocus() est appelée. L'utilisateur active la fenêtre en déplaçant le focus de la manière habituelle. La zone MDI émet le signal subWindowActivated() lorsque la fenêtre active change et la fonction activeSubWindow() retourne la sous-fenêtre active.

La fonction de commodité subWindowList() retourne une liste de toutes les sous-fenêtres. Cette information peut être utilisée dans un menu contextuel contenant une liste de fenêtres, par exemple.

Les sous-fenêtres sont classées en suivant le WindowOrder actuel. Le tri est utilisé pour la subWindowList(), pour activateNextSubWindow() et pour acivatePreviousSubWindow(). Il est également utilisé lors de la mise en cascade ou en tuiles des fenêtres avec cascadeSubWindows() et tileSubWindows().

QMdiArea fournit deux stratégies de disposition intégrées pour les sous-fenêtres : cascadeSubWindows() et tileSubWindows(). Les deux sont des slots et sont facilement connectables à des entrées de menus.

image image

Note : la propriété par défaut associée aux barres de défilement de QMdiArea est Qt::ScrollBarAlwaysOff.

Voir aussi QMdiSubWindow.

Type

enum QMdiArea::AreaOptionflags QMdiArea::AreaOptions

Cette énumération décrit les options pour personnaliser le comportement du QMdiArea.

Constante Valeur Description
QMdiArea::DontMaximizeSubWindowOnActivation 0x1 Lorsque la sous-fenêtre active est maximisée, le comportement par défaut est de maximiser la prochaine sous-fenêtre qui sera activée. Définissez cette option si vous ne souhaitez pas un tel comportement.

Le type AreaOptions est un typedef pour QFlags<AreaOption>. Il contient une combinaison logique OU de valeurs de AreaOption.

enum QMdiArea::ViewMode

Cette énumération décrit les modes de vue de la zone, c'est-à-dire la façon dont les sous-fenêtres seront affichées.

Constante Valeur Description
QMdiArea::SubWindowView   Affiche les sous-fenêtres sans bordures de fenêtre (par défaut).
QMdiArea::TabbedView 1 Affiche les sous-fenêtres avec des onglets dans une barre d'onglets.

Cette énumération a été introduite ou modifiée dans Qt 4.4.

Voir aussi setViewMode().

enum QMdiArea::WindowOrder

Spécifie le critère utilisé pour ordonner la liste de fenêtres enfants retournée par la fonction subWindowList(). Les fonctions cascadeSubWindows() et tileSubWindows() suivent cet ordre lors de l'ordonnancement des fenêtres.

Constante Valeur Description
QMdiArea::CreationOrder   Les fenêtres sont retournées dans l'ordre de leur création.
QMdiArea::StackingOrder 1 Les fenêtres sont retournées dans l'ordre dans lequel elles sont empilées, avec la fenêtre du dessus en dernier dans la liste.
QMdiArea::ActivationHistoryOrder 2 Les fenêtres sont retournées dans l'ordre de leur activation.

Voir aussi subWindowList().

Propriétés

activationOrder : WindowOrder

Cette propriété contient le critère d'ordonnancement pour les listes de sous-fenêtres.

Cette propriété spécifie le critère utilisé pour ordonner la liste de sous-fenêtres retournées par subWindowList(). Par défaut, c'est l'ordre de création des fenêtres.

Cette classe a été introduite dans Qt 4.4.

Fonction d'accès

WindowOrder activationOrder () const

void setActivationOrder ( WindowOrder order )

Voir aussi subWindowList().

background : QBrush

Cette propriété contient la brosse d'arrière-plan pour l'espace de travail.

Cette propriété définit la brosse d'arrière-plan pour l'espace de travail. Par défaut, elle est grise unie, mais ce peut être n'importe quelle brosse (par exemple, une couleur, un dégradé ou une pixmap).

Fonction d'accès

QBrush background () const

void setBackground ( const QBrush & background )

documentMode : bool

Cette propriété indique si la barre d'onglets est en mode « document » dans le mode de vue en onglets.

Le mode document est désactivé par défaut.

Cette classe a été introduite dans Qt 4.5.

Fonction d'accès

bool documentMode () const

void setDocumentMode ( bool enabled )

Voir aussi QTabBar::documentMode et setViewMode().

tabPosition : QTabWidget::TabPosition

Cette propriété contient la position des onglets dans le mode de vue en onglets.

Les valeurs possibles pour cette propriété sont décrites par l'énumération QTabWidget::TabPosition.

Cette classe a été introduite dans Qt 4.4.

Fonction d'accès

QTabWidget::TabPosition tabPosition () const

void setTabPosition ( QTabWidget::TabPosition position )

Voir aussi QTabWidget::TabPosition et setViewMode().

tabShape : QTabWidget::TabShape

Cette propriété contient la forme des onglets dans le mode de vue en onglets.

Les valeurs possibles pour cette propriété sont QTabWidget::Rounded (par défaut) ou QTabWidget::Triangular.

Cette classe a été introduite dans Qt 4.4.

Fonction d'accès

QTabWidget::TabShape tabShape () const

void setTabShape ( QTabWidget::TabShape shape )

Voir aussi QTabWidget::TabShape et setViewMode().

viewMode : ViewMode

Cette propriété contient la façon dont les sous-fenêtres sont affichées dans le QMdiArea.

Par défaut, la valeur SubWindowView est utilisée pour afficher les sous-fenêtres.

Cette classe a été introduite dans Qt 4.4.

Fonction d'accès

ViewMode viewMode () const

void setViewMode ( ViewMode mode )

Voir aussi ViewMode, setTabShape() et setTabPosition().

Fonctions membres

QMdiArea::QMdiArea ( QWidget * parent = 0 )

Construit une zone MDI vide. parent est passé au constructeur de QWidget.

QMdiArea::~QMdiArea ()

Détruit la zone MDI.

void QMdiArea::activateNextSubWindow () [slot]

Donne le focus clavier à une autre fenêtre dans la liste des fenêtres enfants. La fenêtre activée sera la prochaine trouvée dans l'ordre d'activation actuel.

Voir aussi activatePreviousSubWindow() et QMdiArea::WindowOrder.

void QMdiArea::activatePreviousSubWindow () [slot]

Donne le focus clavier à une autre fenêtre dans la liste des fenêtres enfants. La fenêtre activée sera la fenêtre précédente trouvée dans l'ordre d'activation actuel.

Voir aussi activateNextSubWindow() et QMdiArea::WindowOrder.

QMdiSubWindow * QMdiArea::activeSubWindow () const

Retourne un pointeur sur la sous-fenêtre actuellement active. Si aucune fenêtre n'est actuellement active, la fonction renvoie 0.

Les sous-fenêtres sont traitées comme des fenêtres de niveau supérieur pour ce qui concerne les états d'activation, c'est-à-dire que si un widget en dehors de la zone MDI est une fenêtre active, aucune sous-fenêtre ne sera active. Notez que si un widget de la fenêtre dans laquelle la zone MDI obtient le focus, la fenêtre sera activée.

Voir aussi setActiveSubWindow() et Qt::WindowState.

QMdiSubWindow * QMdiArea::addSubWindow ( QWidget * widget, Qt::WindowFlags windowFlags = 0 )

Ajoute widget comme nouvelle sous-fenêtre à la zone MDI. Si les windowFlags sont différents de zéro, ils surchargeront les indicateurs définis sur le widget.

Le widget peut être soit un QMdiSubWindow soit un QWidget (dans ce cas la zone MDI créera une sous-fenêtre et définira le widget en tant que widget interne).

Note : une fois la sous-fenêtre ajoutée, son parent sera le widget d'affichage de QMdiArea.

     QMdiArea mdiArea;
     QMdiSubWindow *subWindow1 = new QMdiSubWindow;
     subWindow1->setWidget(internalWidget1);
     subWindow1->setAttribute(Qt::WA_DeleteOnClose);
     mdiArea.addSubWindow(subWindow1);
 
     QMdiSubWindow *subWindow2 =
         mdiArea.addSubWindow(internalWidget2);

Lorsque vous créez votre propre sous-fenêtre, vous devez définir l'attribut de widget Qt::WA_DeleteOnClose si vous souhaitez la destruction de la fenêtre lors de sa fermeture dans la zone MDI. Dans le cas contraire, la fenêtre sera cachée et la zone MDI n'activera pas la prochaine sous-fenêtre.

Retourne le QMdiSubWindow qui est ajouté à la zone MDI.

Voir aussi removeSubWindow().

void QMdiArea::cascadeSubWindows () [slot]

Place toutes les fenêtres enfants en cascade.

Voir aussi tileSubWindows().

void QMdiArea::childEvent ( QChildEvent * childEvent ) [virtual protected]

Réimplémentation de QObject::childEvent().

void QMdiArea::closeActiveSubWindow () [slot]

Ferme la sous-fenêtre active.

Voir aussi closeAllSubWindows().

void QMdiArea::closeAllSubWindows () [slot]

Ferme les sous-fenêtres actives en envoyant un QCloseEvent à chaque fenêtre. Vous pouvez recevoir les signaux subWindowActivated() des sous-fenêtres avant qu'elles ne soient fermées (si la zone MDI active la sous-fenêtre lorsqu'une autre se ferme).

Les sous-fenêtres qui ignorent l'événement de fermeture resteront ouvertes.

Voir aussi closeActiveSubWindow().

QMdiSubWindow * QMdiArea::currentSubWindow () const

Retourne un pointeur sur la sous-fenêtre courante, ou 0 s'il n'y a pas de sous-fenêtre courante.

Cette fonction retournera la même fenêtre que activeSubWindow() si le QApplication contenant le QMdiArea est actif.

Voir aussi activeSubWindow() et QApplication::activeWindow().

bool QMdiArea::event ( QEvent * event ) [virtual protected]

Réimplémentation de QObject::event().

bool QMdiArea::eventFilter ( QObject * object, QEvent * event ) [virtual protected]

Réimplémentation de QObject::eventFilter().

QSize QMdiArea::minimumSizeHint () const [virtual]

Réimplémentation de QWidget::minimumSizeHint().

void QMdiArea::paintEvent ( QPaintEvent * paintEvent ) [virtual protected]

Réimplémentation de QWidget::paintEvent().

void QMdiArea::removeSubWindow ( QWidget * widget )

Retire widget de la zone MDI. Le widget peut être soit un QMdiSubWindow soit le widget interne d'une sous-fenêtre. Notez que widget n'est jamais supprimé par QMdiArea. Si un QMdiSubWindow est passé comme argument, son parent sera défini à 0 et il sera retiré mais si un widget interne est passé comme argument, le widget enfant sera défini à 0 mais le QMdiSubWindow ne sera pas retiré.

Voir aussi addSubWindow().

void QMdiArea::resizeEvent ( QResizeEvent * resizeEvent ) [virtual protected]

Réimplémentation de QWidget::resizeEvent().

void QMdiArea::scrollContentsBy ( int dx, int dy ) [virtual protected]

Réimplémentation de QAbstractScrollArea::scrollContentsBy().

void QMdiArea::setActiveSubWindow ( QMdiSubWindow * window ) [slot]

Active la sous-fenêtre window. Si window est 0, toute fenêtre actuellement active est désactivée.

Voir aussi activeSubWindow().

void QMdiArea::setOption ( AreaOption option, bool on = true )

Si on est true, option est activée sur la zone MDI ; sinon elle est désactivée. Voir AreaOption pour connaître l'effet de chaque option.

Voir aussi AreaOption et testOption().

void QMdiArea::setupViewport ( QWidget * viewport ) [protected slot]

Ce slot est appelé par QAbstractScrollArea après que la fonction setViewport() soit appelée. Réimplémentez cette fonction dans une sous-classe de QMdiArea pour initialiser le nouveau viewport avant son utilisation.

Voir aussi setViewport().

void QMdiArea::showEvent ( QShowEvent * showEvent ) [virtual protected]

Réimplémentation de QWidget::showEvent().

QSize QMdiArea::sizeHint () const [virtual]

Réimplémentation de QWidget::sizeHint().

void QMdiArea::subWindowActivated ( QMdiSubWindow * window ) [signal]

QMdiArea envoie ce signal après l'activation de window. Si window est 0, QMdiArea vient de désactiver sa dernière fenêtre active et il n'y a plus de fenêtre active dans l'espace de travail.

Voir aussi QMdiArea::activeSubWindow().

QList<QMdiSubWindow *> QMdiArea::subWindowList ( WindowOrder order = CreationOrder ) const

Retourne une liste de toutes les sous-fenêtres dans la zone MDI. Si l'ordre order est CreationOrder (par défaut), les fenêtres sont triées dans l'ordre dans lequel elles ont été insérées dans l'espace de travail. Si l'ordre order est StackingOrder, les fenêtres sont listées dans leur ordre d'empilement, la fenêtre du dessus étant le dernier élément de la liste. Si l'ordre order est ActivationHistoryOrder, les fenêtres sont listées selon leur historique d'activation.

Voir aussi WindowOrder.

bool QMdiArea::testOption ( AreaOption option ) const

Retourne true si option est activée ; sinon retourne false.

Voir aussi AreaOption et setOption().

void QMdiArea::tileSubWindows () [slot]

Place toutes les fenêtres enfants dans une disposition en tuiles (fenêtres juxtaposées).

Voir aussi cascadeSubWindows().

void QMdiArea::timerEvent ( QTimerEvent * timerEvent ) [virtual protected]

Réimplémentation de QObject::timerEvent().

bool QMdiArea::viewportEvent ( QEvent * event ) [virtual protected]

Réimplémentation de QAbstractScrollArea::viewportEvent().

Remerciements

Merci à Louis du Verdier et Alexandre Laurent pour la traduction, ainsi qu'à Ilya Diallo, Dimitry Ernot et Claude Leloup pour la relecture !

Warning: include(): https:// wrapper is disabled in the server configuration by allow_url_include=0 in /home/developpez/www/developpez-com/upload/qt/doc/bs.php on line 4 Warning: include(https://qt.developpez.com/index/rightColumn): failed to open stream: no suitable wrapper could be found in /home/developpez/www/developpez-com/upload/qt/doc/bs.php on line 4 Warning: include(): Failed opening 'https://qt.developpez.com/index/rightColumn' for inclusion (include_path='.:/usr/php53/lib/php') in /home/developpez/www/developpez-com/upload/qt/doc/bs.php on line 4
Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7
Copyright © 2020 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur, une redirection cassée ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -

Partenaire : Hébergement Web