[Qt3/C++] char aan QTextEdit toevoegen

Pagina: 1
Acties:

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14:02
Weet iemand of het mogelijk is om een karakter toe te voegen aan een QTextEdit? Ik wil namelijk 'Hyperterminal' voor linux maken (opdracht in een project), en kom er net achter dat QTextEdit::append() niet losse tekens toe kan voegen. Hij maakt van een string dan altijd een paragraaf. Dat is zeg maar niet echt handig voor wat wij willen doen :) , alles komt karakter voor karakter binnen.
Is er een oplossing voor dit probleem? Of weet iemand een ander widget dat ongeveer hetzelfde kan als QTextEdit in logtextmode (evt. zonder opmaak), en dit wel kan?

Verwijderd

MBV schreef op 24 september 2004 @ 23:24:
Weet iemand of het mogelijk is om een karakter toe te voegen aan een QTextEdit? Ik wil namelijk 'Hyperterminal' voor linux maken (opdracht in een project), en kom er net achter dat QTextEdit::append() niet losse tekens toe kan voegen. Hij maakt van een string dan altijd een paragraaf. Dat is zeg maar niet echt handig voor wat wij willen doen :) , alles komt karakter voor karakter binnen.
Is er een oplossing voor dit probleem? Of weet iemand een ander widget dat ongeveer hetzelfde kan als QTextEdit in logtextmode (evt. zonder opmaak), en dit wel kan?
QTextEdit->insertAt(....) misschien?

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14:02
Daar zal ik eens naar kijken. (moet ik eerst rebooten naar linux, komt waarschijnlijk eind van de week i.v.m. drukke todo-list :) ). Voorlopig heb ik het 'opgelost' door QTextEdit in 'normale' modus te zetten, read-only. Dan voeg ik iets toe door de text op te vragen, leeg te halen en opnieuw erin te zetten. In logtext-modus werkte ook dat niet :S
Ja, dat is smerig
offtopic:
Dat een fox-fan dat weet ;)

[ Voor 18% gewijzigd door MBV op 01-10-2004 23:59 ]


  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14:02
Ik heb hem nu voor het grootste gedeelte werkend wat ik ermee wil.met dank aan de grote FOX-fan :) Eventuele andere toetsen kan ik afvangen zoals ik wil, behalve de enter-toets!

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
void QtKbdTest::keyPressEvent(QKeyEvent* e)
{
  QString s (e->text());
  bool handled(false);
  int key(e->key());

  // dit lijkt niks te doen, moet ik toch op een andere manier kijken 
  // of ik een speciaal teken te pakken heb. s is nooit Null kennelijk
  //isEmpty() ga ik morgen proberen
  // het idee lijkt me duidelijk
  if (s.isBlank() == TRUE)
  {
    switch (e->key())
    {
      case Qt::Key_Tab:
                    s = "\t";
                    break;
      case Qt::Key_Enter:
      case Qt::Key_Return:
                    logtextedit->append("enter  ");
                    handled = TRUE;
                    break;                                       
      case Qt::Key_Escape:
                    s = "escape ";
                    break;
      default:
                    qt_main::keyPressEvent(e);
                    handled = TRUE;
    }
  }
  if (handled == FALSE)
  {
        int paragraphs (logtextedit->paragraphs());
        int chars (logtextedit->paragraphLength(paragraphs-1));
        logtextedit->insertAt(s, paragraphs-1, chars);
  }
}

Het gekke is nu dat ik in debugger helemaal niet in deze functie terecht kom. Ik zal morgen uitzoeken hoe dat komt, nu vind ik het wel weer laat genoeg. Voor degenen die het willen gebruiken om hyperterminal te maken: even wachten, na de kerstvakantie is hij af :) kan je hem zelf uitbreiden voor telnet ;)

to be continued...
edit:
enter had al een signal: keyReturn(). Deze vangt ook andere dingen af, zoals alt-toets indrukken. Dat moet je dus filteren, als je hiermee signals gaat maken.
Ook heeft bovenstaande code het nadeel dat ik van het venster de toetsaanslagen heb afgevangen. Ik heb nu zelf een widget gemaakt die overerft van QTextEdit. Wil je die hebben, stuur maar een mailtje :)

[ Voor 21% gewijzigd door MBV op 09-10-2004 11:36 ]