Terminal Ein-/Ausgabe mit QTextEdit
Verfasst: 31. Oktober 2005 10:32
Hi.
Ich bin gerade dabei, ein Terminalprogramm für das Debuggen von uCs über UART zu schreiben, welches die Features der meisten am Markt existierenden Programme vereint.
Nun bin ich auf das Problem der Ein-/Ausgaben gestoßen. Ich möchte dafür ein QTextEdit Widget einsetzen und habe die Key-Events bereits mit einem Filter abgefangen (s.u.)
Mein Problem: Wie bekomme ich die gedrückte Taste von dem Eventhandler in meine Applikation hinüber?
Filterdeklaration:
Filterimplementation:
Verwendung:
Vielen Dank für eure Unterstützung und Gruß,
Christoph Fauck
Ich bin gerade dabei, ein Terminalprogramm für das Debuggen von uCs über UART zu schreiben, welches die Features der meisten am Markt existierenden Programme vereint.
Nun bin ich auf das Problem der Ein-/Ausgaben gestoßen. Ich möchte dafür ein QTextEdit Widget einsetzen und habe die Key-Events bereits mit einem Filter abgefangen (s.u.)
Mein Problem: Wie bekomme ich die gedrückte Taste von dem Eventhandler in meine Applikation hinüber?
Filterdeklaration:
Code: Alles auswählen
#include <qobject.h>
#include <qevent.h>
class HandleEvents : public QObject
{
//Q_OBJECT // Occurs errors like: undefined reference to `vtable for HandleEvents'
protected:
bool eventFilter(QObject *pqo_Object, QEvent *pqe_Event);
};
Code: Alles auswählen
bool HandleEvents::eventFilter(QObject *pqo_Object, QEvent *pqe_Event)
{
if ( pqe_Event->type() == QEvent::KeyPress )
{
// Special processing for key press
QKeyEvent *pqe_QKeyEvent = (QKeyEvent *)pqe_Event;
qDebug( "Key: %x", pqe_QKeyEvent->key() );
// emit testsignal(); // Doesn't work since I can't connect from main class
}
// Only key events allowed
return TRUE;
}
Code: Alles auswählen
// Generate own defined event handler
pcl_HandleEvents = new HandleEvents;
// Install event filter
ps_SingleTerminalCurrent->pcl_SingleTerminalGui->
TE_Terminal->installEventFilter(pcl_HandleEvents);
// Zeiger auf ein Element einer verketteten Liste ->Zeiger auf ein von mir erstelltes
// Widget, welches ein komplettes Terminal enthält -> Zeiger auf ein QTextEdit
// Widget (TE_Terminal)
// Auf dieser Ebene benötige ich die Taste in einer anderen Methode.
Vielen Dank für eure Unterstützung und Gruß,
Christoph Fauck