teclas teclado rápido rapido rapidas que directo con combinaciones comandos acceso c++ windows qt

c++ - teclado - teclas de acceso rapido pdf



¿Cuál es la diferencia entre la tecla de acceso directo, el acceso directo y la tecla de aceleración? (3)

  1. ¿Cuál es la diferencia sobre ellos?

  2. En Qt, si tengo una tecla de acceso rápido para QPushButton, puedo hacerlo con "Alt +?", Pero si es para qaction, puedo presionar "?" solamente


En Windows, una clave de aceleración es la aplicación global; por ejemplo, Alt + F4 .

Una tecla de método abreviado es parte del nombre de un elemento o botón del menú, donde se puede subrayar, y está disponible (sin modificadores) cuando ese elemento o botón del menú está directamente disponible.

Desde Microsoft:

Una tecla de acceso rápido es una combinación de teclas que el usuario puede presionar para realizar una acción rápidamente. Por ejemplo, un usuario puede crear una tecla de acceso rápido que active una ventana determinada y la coloque en la parte superior del orden z.

Lo que parece indicar que las teclas de acceso rápido son del sistema global.

Para resumir:

  • tecla de método abreviado = sin modificadores, local en el menú o (para botón) en la ventana
  • tecla de aceleración = típicamente con modificador, aplicación global
  • tecla de acceso rápido = aparentemente sistema global

No sé sobre significados específicos en Qt; Para eso ver la documentación de Qt.


En Windows:

HotKey

Tecla del teclado o combinación de teclas que ejecutan un comando en un contexto dado.

Atajo

Tecla de acceso directo de varias teclas sin restricciones de navegación en el menú ni elementos de interfaz de usuario requeridos.

Llave de acceso

Tecla de acceso directo de una sola tecla cuyo comando es activar un control de comando visible (requiere el elemento gui) que está subtitulado / etiquetado con la correspondiente tecla de tecla de acceso directo subrayada.

Teclas de aceleración

Tecla de acceso directo de varias teclas cuyo comando es activar un control de comando (requiere elemento gui) independientemente de su visibilidad.


La respuesta de Alf es correcta para la aplicabilidad de Windows. Los términos que menciona (tecla de acceso directo / acceso directo / acelerador) no suenan familiares desde el punto de vista de Qt puro.

En Qt puede elegir manejar secuencias de claves usted mismo o puede usar el propio método de simplificación de Qt. De cualquier manera, debe recordar que Qt se dirige a muchas plataformas en las que una combinación de teclas puede o no tener sentido. El clásico Alt + F4 tiene sentido en un teclado, pero en un dispositivo móvil no tiene un modificador Alt o una tecla F4 . Lo que realmente desea es una forma de especificar un acceso directo genérico a la aplicación . Este problema se multiplica porque el símbolo puede estar disponible, pero la secuencia de teclas para alcanzarlo puede ser diferente en otras distribuciones de teclado. Esta sección de la documentación proporciona un buen ejemplo.

Qt maneja esto con la class QKeySequence . Los muy inteligentes desarrolladores de Qt han proporcionado una manera fácil de definir acciones comunes del usuario y esas acciones usarán combinaciones de teclas predeterminadas para la plataforma de destino. Lo hace usando enum QKeySequence::StandardKey y en el ejemplo de cierre de la aplicación , podría usar esto así:

QAction exitAction; exitAction.setShortcut(QKeySequence(QKeySequence::Quit));

Todo esto se explica en la documentation . Hay otros dos modificadores ( shortcutContext() y softKeyRole() ) que se pueden aplicar a QActions que afectan su aplicación de manera más avanzada.

También eres libre de asignar tus propios atajos usando algo como:

QAction helpAction(tr("&?")); helpAction.setShortcut(QKeySequence(tr("ALT+?")));

La primera línea aplica el texto (traducido) "?" a la acción que aparecerá como texto en un menú o botón. Tenga en cuenta que el símbolo de signo de interrogación podría no ser el símbolo correcto en todos los idiomas, por lo que el método de traducción le permite al traductor asignar un símbolo más apropiado si es necesario. El símbolo "y" significa que el carácter inmediatamente después será la tecla de acceso directo cuando el menú esté activo.

La segunda línea asigna el atajo (traducido) de Alt + ? y en este ejemplo, la plataforma manejará el modificador Shift si es necesario. Nuevamente, el método tr() permite al traductor especificar un atajo más apropiado si está disponible.

En respuesta al comentario de teukkam:

Si quiere decir que simplemente quiere que su botón sea activable por una pulsación de tecla, ya sea modificado por Alt o no, entonces podría hacer algo como:

QPushButton* yourButton; // assign this pointer yourself yourButton->setText(tr("&Process")); yourButton->setShortcut(tr("p"));

En este ejemplo, el símbolo y en setText() hace lo mismo que en el ejemplo anterior, y la función de traducción se usa de la misma manera.

El método setShortcut() solo usa la letra "p", por lo que debería funcionar ahora con o sin el modificador Alt . Un vistazo rápido a la documentación sugiere que esto funcionará con o sin el modificador Shift, ya que las letras en una secuencia de teclas aparentemente no distinguen entre mayúsculas y minúsculas.

Además, P sería una mala elección, ya que a menudo se asume que es el comando de impresión .

Una nota final si está definiendo atajos codificados, ¡asegúrese de que funcionen en todas sus plataformas de destino!