Table des matières

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>

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::QWidgetAction ( QObject * parent )

Construit une action avec parent.

~QWidgetAction()

QWidgetAction::~QWidgetAction () [virtual]

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

createWidget()

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().

createdWidgets()

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.

defaultWidget()

QWidget * QWidgetAction::defaultWidget () const

Retourne le widget par défaut.

Voir aussi setDefaultWidget().

deleteWidget()

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().

event()

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

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

eventFilter()

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

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

releaseWidget()

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().

requestWidget()

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().

setDefaultWidget()

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 à <!zamnell!> pour la traduction et à <!johnlamericain!>, <!dourouc!> ainsi qu’à <!jacques_jean!> pour leur relecture !