Qt en Español
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.
Qt en Español

Qt en Español es una comunidad de usuarios para aprender a Programar usando las librerias Qt

Buscar
 
 

Resultados por:
 


Rechercher Búsqueda avanzada

Últimos temas
» Desaparecen objetos del formulario al usar showMaximized()
Teclado Virtual EmptySáb Sep 13, 2014 9:54 pm por ljimenez29

» visivilidad de controles
Teclado Virtual EmptyDom Mayo 18, 2014 5:04 pm por solitarywolf

» Error QT (y no sé que más poner ¬¬)
Teclado Virtual EmptyJue Sep 26, 2013 4:02 pm por Anónimo

» QT, VTK en VS 2008 C++
Teclado Virtual EmptyJue Abr 11, 2013 5:19 pm por monicadiaz

» [Ayuda]Programa en PyQt4 en modo Pantalla completa
Teclado Virtual EmptySáb Mar 30, 2013 8:56 pm por fortil

» SIGNAL y SLOT
Teclado Virtual EmptySáb Mar 02, 2013 5:11 pm por loloqt

» Qt creator 5.0.1 en Windows 8...."Qt creator needs a compiler set up to build. Configure a compiler in the kit options"
Teclado Virtual EmptyMiér Feb 27, 2013 4:23 pm por caliche

» mi aplicacion no me lee la base de datos
Teclado Virtual EmptyJue Oct 18, 2012 1:55 pm por jldiaz

» QT.Para G19 de Logitech
Teclado Virtual EmptyDom Oct 14, 2012 3:00 am por novax1

Navegación
 Portal
 Índice
 Miembros
 Perfil
 FAQ
 Buscar
Compañeros
Crear foro
Sondeo

Que nombre te gustaria que se llamara el foro?

Teclado Virtual Vote_lcap27%Teclado Virtual Vote_rcap 27% [ 6 ]
Teclado Virtual Vote_lcap18%Teclado Virtual Vote_rcap 18% [ 4 ]
Teclado Virtual Vote_lcap0%Teclado Virtual Vote_rcap 0% [ 0 ]
Teclado Virtual Vote_lcap55%Teclado Virtual Vote_rcap 55% [ 12 ]

Votos Totales : 22


No estás conectado. Conéctate o registrate

Teclado Virtual

3 participantes

Ir abajo  Mensaje [Página 1 de 1.]

1Teclado Virtual Empty Teclado Virtual Dom Abr 18, 2010 6:24 am

Gerard



Hola saludos, Me llamo Gerard, este es el primer post que hago, aquí va la duda:

Estoy realizando un chat para un dispositivo con pantalla táctil y me falta el teclado virtual (matriz de QPushButtons) , pero no sé como las teclas pulsadas hacia el QLineEdit determinado de cada pestanya de usuario (ya que pueden haber muchos QLineEdits, uno por usuario).

Cada conversación actual con un usuario se muestra a través de una pestaña. Esta pestaña contiene un QTextEdit por donde se muestra la conversación mantenida y el QLineEdit por donde escribes.

Por decirlo de alguna otra manera, no se como enviar las teclas pulsadas en el QLineEdit "ACTIVO" o "en uso"

He mirado QTApps, he encontrado teclados virtuales pero no me compilan y tienen un código bastante complicado de entender para mi nivel. He mirado su código y utilizan funciones tales como FocusInEvent, o FocusOutEvent, me huelo que por ahí van los tiros... pero conceptualmente no tengo ni idea de que son...

Si alguien me pudiera dar algo de luz se lo agradecería


Muchas Gracias

Un Saludo

2Teclado Virtual Empty Sugerencia Dom Abr 18, 2010 6:43 pm

adrimag



Hola Gerard:
Como indica el titulo, no creo darte una solución, mas bien yo la llamaría una sugerencia.
Me parece que lo que tu tienes es un problema de manejo de información, no de programación. Deberías armar mejor la estructura interna de tu programa.
Un ejemplo para aclarar la idea:
Por cada usuario que inicia una sesión chat o por cada conversación que inicia el usuario, yo retendría cierta información que luego me va ser útil, por ej. el nombre de usuario, un puntero al QLineEdit donde escribiría, un puntero a la pestaña, etc. Con esto armaría una lista de las conversaciones activas.
Cuando seleccionen un tab una de estas estructuras pasaría a ser la activa y podría mandar mensajes y llamar a funciones de los distintos componentes de la estructura.
Hablando en código: armaría una clase para retener la información:
Código:

class algo
{
QString usuario;
QLineEdit * editor;
//otros....
}
Podrías usar QList para almacenar la lista de conversaciones activas, u otra estructura.
Cuando se seleccione el tab indice x, selecciona el indice x de tu QList. (Esta es una técnica de selección, existen otras).
Cuando presionan un botón del teclado virtual, armas una QString con la letra correspondiente y se la agregas al QLineEdit.
Código:

// cadBotonPresionado seria la QString generada por el botón del teclado virtual
QString cad = algo->editor.text() + cadBotonPresionado;
algo->editor.setText(cad)
Puedes ver en la documentación de QString como mejorar el comportamiento de la concatenación
La idea, como veras es bastante rustica, tendrás que trabajarla bastante.
La clase se puede ampliar bastante como para contemplar otras opciones como estado del usuario, imagen, fuentes personalizadas, colores, y un largo etc.
Espero que te sirva la idea y no haber entendido mal tu problema.
Saludos

3Teclado Virtual Empty Re: Teclado Virtual Dom Abr 18, 2010 11:52 pm

mkfnx



Hola Gerard convendría que dieras más detalles sobre tu aplicación para descartar cualquier problema como el que menciona adrimag.

Aunque yo creo que sí tiene que ver con el componente que este activo/enfocado, ya que es común que los teclados virtuales sean un widget/ventana independiente de la aplicación; Debido a esto el componente de texto (QLineEdit, QTextEdit) pierde el foco cuando se presiona un botón del teclado virtual.

Lo que supongo que hacen los programadores de los teclados virtuales que mencionas es tener una función que se active cada que algún componente de la interfaz pierda el foco, si este componente es un widget para capturar texto entonces guardan una referencia a él, luego cuando alguno de los botones del teclado virtual manda la señal clicked entonces se escribe el caracter correspondiente al botón en el widget al que apunta la referencia que tenemos, la cuál, gracias a la función que te mencioné antes, debe ser el widget sobre cual el usuario quiere escribir.

Es una suposición solamente pero espero te sea útil, revisa más a fondo el FocusInEvent y el FocusOutEvent y también los EventFilters, estos últimos te servirán para la primera parte: instalas un event filter cada que la aplicación registre un FocusOutEvent.

4Teclado Virtual Empty Re: Teclado Virtual Miér Abr 21, 2010 9:53 am

Gerard



Hola de nuevo! al final he hecho mas o menos lo que comentaba adrimag. Para redirigir la señal del QPushButton al QLineEdit determinado he hecho esto:

void presentacion::SLOT_RECEPTOR_DE_TECLAS(QString botton){
for(i=0;i MENORQUE MaxUsuarios;i++){ //pongo MENORQUE pq el simbolo correspondiente no lo muestra
if((usuario[i].logueado()==true)&(usuario[i].esVisible()==true)){
usuario[i].insertaCaracter(botton);
}//finIF
}//finFOR
}//finSLOT



* donde la función "esVisible" es:

bool user::esVisible{
return QLineEditUser->isVisible(); //la clase QLineEdit tiene la función isVisible() que devuelve true si se esta viendo por pantalla
//el widget
}


Igual no es la manera mas elegante de hacerlo pero funciona.


Muchas Gracias adrimag y mkfnx!!

Saludos!

Contenido patrocinado



Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.