[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