===== 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. [[#Description détaillée|Plus d'informations...]] ==== 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|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 [[#createWidget|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 [[#deleteWidget|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|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|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 : - 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 ; - la gestion du focus/clavier du widget est impossible ; - à cause du design d'Apple, le suivi de la souris sur le widget ne fonctionne pas actuellement ; - la connexion du signal [[qaction#triggered|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|QObject::deleteLater()]]. Voir aussi [[#createWidget()]]. === event() === ''bool QWidgetAction::event ( [[QEvent]] * event ) [virtual protected]'' Réimplémentation de [[qobject#event|QObject::event()]]. === eventFilter() === ''bool QWidgetAction::eventFilter ( [[QObject]] * obj, [[QEvent]] * event ) [virtual protected]'' Réimplémentation de [[qobject#eventFilter|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 à pour la traduction et à , ainsi qu'à pour leur relecture !