QTextBrowser im Chat-Programm

Alles rund um die Programmierung mit Qt
Antworten
D.Cent
Beiträge: 44
Registriert: 25. Juli 2007 15:39

QTextBrowser im Chat-Programm

Beitrag von D.Cent »

Hallo,

ich bin gerade dabei, ein eigenes Chat-Programm für ein Spiel zu schreiben.
Sobald jemand etwas schreibt, soll es in einem QTextBrowser erscheinen.

Das funktioniert soweit auch ganz gut, z.B. sieht das dann so aus:
D.Cent: Hallo!
D.Cent: Das ist ein Test.
Sobald ich aber z.B. zwischen die beiden Sätze klicke, und dann jemand etwas schreibt, wird der Text an der falschen Stelle eingefügt, und das, obwohl man in dem TextBrowser nicht editieren kann:
D.Cent: HalD.Cent: 2ter Test
lo!
D.Cent: Das ist ein Test.
Ich habe mir gedacht, dass ich einfach bei jedem Klick bloss den QTextCursor an das Ende setzen muss, was ich kurzerhand über das Signal "cursorPositionChanged" gemacht habe (mit QTextCursor tc; textbrowser.setCursor(tc.movePosition(QTextCursor::End)).

Doch leider hat das nichts geändert.
Hat jemand eine Idee, wie ich diese Eigenschaft deaktivieren kann?
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

QTextCursor tc; textbrowser.setCursor(tc.movePosition(QTextCursor::End)).
das schreib mal bevor du text in den qtextbrowser einfügst.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

oder benutze einen qstring in dem du die nachrichten pufferst. sprich erst mal alles an den string anhängst und dann textBrowser->setText(pufferString) aufrufst.
D.Cent
Beiträge: 44
Registriert: 25. Juli 2007 15:39

Beitrag von D.Cent »

Danke für Deine Antwort, KernelPanic, doch das funktioniert leider nicht :-/
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Verwende ein QListWidget stattdessen...
D.Cent
Beiträge: 44
Registriert: 25. Juli 2007 15:39

Beitrag von D.Cent »

Das unterstützt leider kein HTML.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wer sagt das?
Eltharion
Beiträge: 74
Registriert: 4. Mai 2006 14:42
Wohnort: Magdeburg
Kontaktdaten:

Beitrag von Eltharion »

Mit einem QTextEdit funktioniert das sehr gut so:

Code: Alles auswählen

void ViewPlayer::cursorDown()
{
  QTextCursor cursor = m_editor.textCursor();

  cursor.clearSelection();
  cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor, 1);

  m_editor.setTextCursor(cursor);
}

void ViewPlayer::scrollDown()
{
  QScrollBar *sb;
  
  sb = m_editor.verticalScrollBar();
  if (sb)
    sb->setValue(sb->maximum());

  sb = m_editor.horizontalScrollBar();
  if (sb)
    sb->setValue(0);
}

void ViewPlayer::insertText(const QString &text, unsigned int type /*=0*/)
{
  cursorDown();

  QTextCursor cursor = m_editor.textCursor();

  switch (type) {
    case 1:
      cursor.insertText(text, m_fmt_output);
      break;

    case 2:
      cursor.insertText(text, m_fmt_input);
      break;

    default:
      cursor.insertText(text);
  }

  cursorDown();
  scrollDown();

  m_editor.ensureCursorVisible();
}

void ViewPlayer::insertImage(const QString &path)
{
  QTextCursor cursor = m_editor.textCursor();
  QTextImageFormat imageFormat;

  imageFormat.setName(path);
  cursor.insertImage(imageFormat);
}
m_editor ist ein QTextEdit, m_fmt_output vom Typ QTextCharFormat. Alles enthalten in einer Container-Klasse.

Wie man sieht, sollte auch der Scrollbereich nach links gerückt werden und auch ohne QTextBrowser-Fähigkeiten sind farbige Texte, Bilder, usw. möglich. Das habe ich damals für einen MUD-Client so programmiert, in der Hoffnung, dass es schneller wird als ein QTextBrowser. Ich habe aber keine Ahnung, ob es wirklich so ist.

E*
mathies
Beiträge: 149
Registriert: 9. Februar 2007 17:50
Wohnort: Erfurt

Beitrag von mathies »

Hi,

warum benutzt Du keinen QTextEdit bzw. QPlainTextEdit? Da gibt es die nette Funktion append...(), damit landet das immer net geordnet am Ende.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

Sicher funktioniert das mit einem string.... ich machs doch selbst so. :?
D.Cent
Beiträge: 44
Registriert: 25. Juli 2007 15:39

Beitrag von D.Cent »

Ok, ihr habt mich überzeugt! Vielen Dank, es geht nun!! :D
Antworten