Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QWidgetAction

La classe QWidgetAction étend QAction par une interface d'insertion de widgets personnalisés dans des conteneurs d'actions, tels que des barres d'outils. Plus d'informations...

#include <QWidgetAction>

Voir la position dans l'arbre des classes.

Héritage

Hérite de QAction.

Description détaillée

La classe QWidgetAction étend QAction par une interface d'insertion de widgets personnalisés dans des conteneurs d'actions, tels que des barres d'outils.

La plupart des actions dans une application sont représentées comme des éléments dans des menus ou bien comme des boutons dans des barres d'outils. Cependant, il arrive que des widgets plus complexes soient nécessaires. Par exemple, une action de zoom dans un logiciel de traitement de texte peut être réalisé en utilisant une QComboBox dans une QToolBar, présentant un panel de plusieurs niveaux de zoom. QToolBar fournit la fonction QToolBar::insertWidget() pour l'insertion d'un simple widget. Toutefois, si vous voulez implémenter une action utilisant un widget personnalisé pour une visualisation dans plusieurs conteneurs, alors vous devrez créer une sous-classe de QWidgetAction.

Si un QWidgetAction est, par exemple, ajouté à une QToolBar, alors QWidgetAction::createWidget() est appelée. Les réimplémentations de cette fonction devraient créer un nouveau widget personnalisé avec le parent spécifié.

Si l'action est retirée d'un widget conteneur, alors QWidgetAction::deleteWidget() est appelée avec, en argument, le widget personnalisé précédemment créé. L'implémentation par défaut masque le widget et le supprime en utilisant QObject::deleteLater().

Si vous n'avez qu'un unique widget personnalisé, alors vous pouvez le définir en tant que widget par défaut en utilisant setDefaultWidget(). Ce widget sera alors utilisé si l'action est ajoutée à une QToolBar ou, en général à un conteneur d'actions qui supporte QWidgetAction. Si un QWidgetAction avec uniquement un widget par défaut est ajouté à deux barres d'outils en même temps, alors le widget par défaut est uniquement ajouté à la première barre d'outils dans laquelle l'action a été ajoutée. QWidgetAction s'approprie alors le widget par défaut.

Notez qu'il appartient au widget d'activer l'action, par exemple par la réimplémentation du gestionnaire d'événements de souris et par l'appel de QAction::trigger().

Mac OS X : si vous ajoutez un widget à un menu dans la barre de menu de l'application sous Mac OS X, le widget sera ajouté mais fonctionnera avec quelques limitations :

  1. le widget est reparenté à partir de QMenu au menu natif ; si vous affichez le menu dans un autre endroit (par exemple, dans un menu surgissant), le widget n'y sera pas ;
  2. la gestion du focus/clavier du widget est impossible ;
  3. à cause du design d'Apple, le suivi de la souris sur le widget ne fonctionne pas actuellement ;
  4. la connexion du signal triggered() à un slot ouvrant une boîte de dialogue modale causera un crash sous Mac OS X 10.4 (bug connu et reconnu par Apple), un contournement est d'utiliser à la place une QueuedConnection au lieu d'une DirectConnection.

Voir aussi QAction, QActionGroup et QWidget.

Fonctions membres

QWidgetAction::QWidgetAction ( QObject * parent )

Construit une action avec parent.

QWidgetAction::~QWidgetAction () [virtual]

Détruit l'objet et libère les ressources allouées.

QWidget * QWidgetAction::createWidget ( QWidget * parent ) [virtual protected]

Cette fonction est appelée à chaque fois que l'action est ajoutée à un widget conteneur supportant le widget personnalisé. Si vous ne voulez pas qu'un widget personnalisé soit utilisé comme représentation de l'action dans le widget parent spécifié, alors 0 devrait être retourné.

Voir aussi deleteWidget().

QList<QWidget *> QWidgetAction::createdWidgets () const [protected]

Retourne la liste des widgets ayant été créés par l'utilisation de createWidget() et étant actuellement en utilisation par des widgets dont l'action leur a été ajoutée.

QWidget * QWidgetAction::defaultWidget () const

Retourne le widget par défaut.

Voir aussi setDefaultWidget().

void QWidgetAction::deleteWidget ( QWidget * widget ) [virtual protected]

Cette fonction est appelée à chaque fois que l'action est retirée d'un widget conteneur affichant l'action en utilisant un widget personnalisé précédemment créé avec createWidget(). L'implémentation par défaut masque le widget et le programme pour une suppression par l'utilisation de QObject::deleteLater().

Voir aussi createWidget().

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

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

bool QWidgetAction::eventFilter ( QObject * obj, QEvent * event ) [virtual protected]

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

void QWidgetAction::releaseWidget ( QWidget * widget )

Libère le widget spécifié.

Les widgets conteneurs supportant les actions appellent cette fonction lorsqu'un widget action est retiré.

Voir aussi requestWidget(), deleteWidget() et defaultWidget().

QWidget * QWidgetAction::requestWidget ( QWidget * parent )

Retourne un widget représentant l'action, avec le parent donné.

Les widgets conteneurs supportant les actions peuvent appeler cette fonction pour demander un widget comme représentation visuelle de l'action.

Voir aussi releaseWidget(), createWidget() et defaultWidget().

void QWidgetAction::setDefaultWidget ( QWidget * widget )

Définit le widget en tant que widget par défaut. QWidgetAction devient le propriétaire du widget. À moins que createWidget() soit réimplémentée par une sous-classe pour retourner un nouveau widget, le widget par défaut est utilisé lorsqu'un widget conteneur demande un widget à travers requestWidget().

Voir aussi defaultWidget().

Remerciements

Merci à Louis du Verdier pour la traduction et à Jonathan Courtois, Thibaut Cuvelier ainsi qu'à Jacques Thery pour leur relecture !

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 56
  2. Les développeurs ignorent-ils trop les failles découvertes dans leur code ? Prenez-vous en compte les remarques des autres ? 17
  3. Apercevoir la troisième dimension ou l'utilisation multithreadée d'OpenGL dans Qt, un article des Qt Quarterly traduit par Guillaume Belz 0
  4. BlackBerry 10 : premières images du prochain OS de RIM qui devrait intégrer des widgets et des tuiles inspirées de Windows Phone 0
  5. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
  6. Adieu qmake, bienvenue qbs : Qt Building Suite, un outil déclaratif et extensible pour la compilation de projets Qt 17
  7. La rubrique Qt a besoin de vous ! 1
Page suivante

Le Qt Developer Network au hasard

Logo

Combiner licence, à propos et fermer d'une dernière manière

Le Qt Developer Network est un réseau de développeurs Qt anglophone, où ils peuvent partager leur expérience sur le framework. Lire l'article.

Communauté

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

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 © 2012 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 ? Un bug ? 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 !
 
 
 
 
Partenaires

Hébergement Web