[gelöst] QTextEdit keyPressEvent

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
whit3
Beiträge: 42
Registriert: 1. Februar 2010 09:55

[gelöst] QTextEdit keyPressEvent

Beitrag von whit3 »

Hallo ich benutze QT 3.3.6 und VisualStudio 2002.
Mir steht momentan nichts Anderes zur Auswahl.

Mein Problem ist, dass ich im KeyPressEvent verschiedene Tasten abfangen muss. Zuerst hab ich es versuch über KeyReleaseEvent zu realisieren, aber dies ist nicht ausreichend. ICh habe versucht den den ursprünglichen Code in die überschriebene Methode einzufügen, um diesen dann abzuändern. Jedoch spuckt der Compiler mir dann eine Menge Fehler aus.

Wie z.B.:

Code: Alles auswählen

error C2027: Verwendung des undefinierten Typs "QTextCursor"
error C2027: Verwendung des undefinierten Typs "QTextDocument"
error C2027: Verwendung des undefinierten Typs "QTextParagraph"
error C2027: Verwendung des undefinierten Typs "QTimer"
Welche Alternative Lösungen gibt es das KeyPressEvent zu modfizieren ?
Zuletzt geändert von whit3 am 23. März 2011 10:12, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn der Compiler die Klassen nicht kennt sollte man die Header einbinden in denen die Klassen definiert sind, oder? --> C++ Grundlagen
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
whit3
Beiträge: 42
Registriert: 1. Februar 2010 09:55

Beitrag von whit3 »

Christian81 hat geschrieben:Wenn der Compiler die Klassen nicht kennt sollte man die Header einbinden in denen die Klassen definiert sind, oder? --> C++ Grundlagen
Das habe ich gemacht...

weiterführend meckert er auch :

Code: Alles auswählen

error C2027: Verwendung des undefinierten Typs "QTextCursor" c:\Programme\Qt\3.3.6\include\qtextedit.h(56) : Siehe Deklaration von 'QTextCursor'
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Qt3 ? Wieso das denn?
Wenn er QTextCursor nicht findet dann ist der Header in dem QTextCursor definiert ist nicht eingebunden. Habe ich aber schon vorhin gesagt...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
whit3
Beiträge: 42
Registriert: 1. Februar 2010 09:55

Beitrag von whit3 »

Christian81 hat geschrieben:Qt3 ? Wieso das denn?
Wenn er QTextCursor nicht findet dann ist der Header in dem QTextCursor definiert ist nicht eingebunden. Habe ich aber schon vorhin gesagt...
weil keine andere Lizenz vorhanden ist...
doch er ist eingebunden ...
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QTextEdit keyPressEvent

Beitrag von franzf »

whit3 hat geschrieben:ICh habe versucht den den ursprünglichen Code in die überschriebene Methode einzufügen, um diesen dann abzuändern.
Du hast aus den Qt-Sourcen den Code abkopiert und in deine Klasse eingefügt? Das macht man nicht!!! Rein aus OOP-Sicht ist das schlimmster Unfug!
QTimer wundert mich, aber die anderen Klassen stehen laut Qt-Klassenübersicht nicht zur Verfügung - wahrscheinlich nur intern verwendete Klassen.

Und die Doku sagt auch ein wenig dazu, auch ein Beispiel ist verlinkt.
whit3
Beiträge: 42
Registriert: 1. Februar 2010 09:55

Re: QTextEdit keyPressEvent

Beitrag von whit3 »

franzf hat geschrieben:
whit3 hat geschrieben:ICh habe versucht den den ursprünglichen Code in die überschriebene Methode einzufügen, um diesen dann abzuändern.
Du hast aus den Qt-Sourcen den Code abkopiert und in deine Klasse eingefügt? Das macht man nicht!!! Rein aus OOP-Sicht ist das schlimmster Unfug!
QTimer wundert mich, aber die anderen Klassen stehen laut Qt-Klassenübersicht nicht zur Verfügung - wahrscheinlich nur intern verwendete Klassen.

Und die Doku sagt auch ein wenig dazu, auch ein Beispiel ist verlinkt.
Da hast du wohl Recht, dass das grober Unfug ist...
aber ein Lösungsansatz wäre auch nicht verkehrt gewesen...
Ich habe keine Ahnung wie ich das keyPressEvent sonst erweitern soll.. :(
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QTextEdit keyPressEvent

Beitrag von franzf »

whit3 hat geschrieben:aber ein Lösungsansatz wäre auch nicht verkehrt gewesen...
Ich habe keine Ahnung wie ich das keyPressEvent sonst erweitern soll.. :(
Lösungsansatz findest du doch im Link von mir:

Code: Alles auswählen

void PictureDisplay::keyPressEvent( QKeyEvent *k )
{
    switch ( tolower(k->ascii()) ) {
        case 'r':                               // reload
            pict->load( name );
            update();
            break;
        case 'q':                               // quit
            QApplication::exit();
            break;
    }
}
PictureDisplay erbt von QWidget.
Wenn du jetzt erreichen willst, dass auch noch von der Basisklasse das keyPressEvent() aufgerufen wird, dann musst du das selber machen. Und das hat mit Qt nix mehr zu tun, sondern ist reines C++:

Code: Alles auswählen

void PictureDisplay::keyPressEvent( QKeyEvent *k )
{
    switch ( tolower(k->ascii()) ) {
        case 'r':                               // reload
            pict->load( name );
            update();
            break;
        case 'q':                               // quit
            QApplication::exit();
            break;
    }

    QWidget::keyPressEvent(k);
}
Wenn nicht in jedem Fall, sondern nur in dem Fall, in dem du keine eigene Funktion anbieten willst, die Funktion der Basisklasse aufrufen willst, machst du das halt im "default:" des switch.
Beachte, dass du immer die Methode der direkten Basisklasse aufrufst!
whit3
Beiträge: 42
Registriert: 1. Februar 2010 09:55

Beitrag von whit3 »

Vielen Dank..
so einfach kann die Lösung sein...
sry wegen der dummen Frage...^^

:D :D :D :D :D :D
Antworten