[Kde-devel-es] ActionGroups?

Eloy Cuadra eloihr2 at eresmas.com
Wed Jul 2 18:42:59 CEST 2003


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hola,

El Miércoles, 2 de Julio de 2003 15:23, Jaime Robles escribió:
> Lo que quiero hacer es lo que creo que se hace con los action
>
> Como cuando en KMail pulsas con el botón derecho sobre un mensaje y te
> aparece un menú con las diferentes acciones que puedes hacer sobre él.
>
> ¿Cómo se hace eso? ¿Són las action groups?

No. Las action groups sirven para crear un grupo de acciones de las que solo 
una estará activa en un momento dado.

Para lo que quieres hacer, deberás usar las KAction directamente. La clase 
KAction es polivalente, y vale para referirse a acciones que pueden estar en 
una opción del menú principal, en la de uno contextual, en un botón de la 
barra de herramientas, etc.


> ¿Cómo se hace desde QT-Designer?

Ni idea. Lo mío no es la programación visual ;-)


> He creado un actiongroup con las 3 actions que quiero pero ahora... ¿Cómo
> lo conecto al widget que quiero (klistview) y... cómo hago para que haga...
> X'DD

En esencia, lo que tienes que crear es un KPopupMenu con las acciones que 
quieras que se puedan realizar sobre el elemento en el que pulsas con el 
botón derecho del ratón. Luego, tendrás que conectar la señal contextMenu de 
la ventana que contiene esos elementos con tu slot para manejar dicha señal, 
en el que básicamente muestras el KPopupMenu que habías creado previamente.

A modo de ejemplo, y suponiendo que tu widget principal es una lista (derivada 
de KListView) contenida en la ventana principal de tu aplicación (derivada de 
KMainWindow), en el constructor de esta ventana principal podrías crear un 
KPopupMenu más o menos así:

MiContextMenu = new KPopupMenu(this);
accion1->plug(MiContextMenu);
accion2->plug(MiContextMenu);
accion3->plug(MiContextMenu);

Se supone que MiContextMenu es una variable de tipo KPopupMenu*, y que 
accion1, accion2 y accion3 son variables de tipo KAction*, todas ellas 
declaradas en la clase de tu ventana principal derivada de KMainWindow.

Luego, también en el constructor de tu ventana principal, conectas la señal 
contextMenu de tu widget principal (la lista de elementos) con tu slot que 
maneja el menú contextual:

connect(MiWidgetLista, SIGNAL(contextMenu(KListView*, QListViewItem*, const 
QPoint&)), this, SLOT(slotMiMenuContextual(KListView*, QListViewItem*, const 
QPoint&)));

Por supuesto, deberás declarar una función slotMiMenuContextual para que 
muestre el menú contextual, más o menos así:

void MiVentanaPrincipal::slotMiMenuContextual(KListView*, QListViewItem*, 
const QPoint& p)
{
  MiContextMenu->exec(p);
}

Espero que esto te aclare un poco las cosas :-)

Un saludo,

Eloy
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)

iD8DBQE/AxmtwUEwizbVe3YRAiBfAJ9Mk7lcz/KC/x0qNjVc6Sz1CoczPwCeI4Mp
1jNSh0+r7m9XTC6Zp182P2A=
=efQO
-----END PGP SIGNATURE-----



More information about the Kde-devel-es mailing list