Seite 1 von 1

QTextBrowser versch. Dokumente

Verfasst: 15. August 2010 02:03
von Nvidia
Hallo,
ich moechte zwischen zwei Dokumenten wechseln, wobei jedes auf das andere verlinkt ist,
so nun hab ich das so gemacht:
cursor->insertHtml("<html><title>Group</title><a href = Person>Klick1</a></html>");
cursor->insertHtml("<html><title>Person</title><a href = Group>Klick2</a></html>");
nun krieg ich als fehler:
QTextBrowser: No document for Person
(meint er damit nun das document das er hat also ein QDokument oder ein HTML dokument)
und natuerlich soll jedes dokument nur allein sichtbar sein.
wie krieg ich das hin?
nvidia
//Edit 1
ich hab es jetzt ueber zwei verschiedene Dokumente versucht.
Also wenn der Link geklickt wird, werden die Dokumente gewechselt.
Das einzige Problem ist, das der TextBrowser mir meldet, das das Dokument, zu dem der Link fuehrt nicht gefunden wird, da er ja nicht existiert und er zeigt mir eine leere Seite an anstatt, des neuen Dokuments.
Ein was versteh ich nicht so ganz, das Signal anchorClicked() und der Link, werden die gleichzeitig ausgefuehrt oder nacheinander?
Weil wenn ich im Slot fuer anchorClicked() z.b. setOpenLinks(false); setze
duerfte er den Link nicht mehr ausfuehren, wenn der Slot fuer anchorClicked(); ausgefuert ist. Nun leider ist das nicht so, aber nach dem qDebug() << kommt das qDebug aus dem slot der nach anchorClicked(); ausgefuehrt wird, eindeutig bevor der QTextBrowser meldet, dass das Signal ausgefuehrt wird.
Ich kann leider nicht das setOpenLinks(false); nicht vorher setzen weil sonst gar keine links mehr funktionieren, die in dem Dokument selbst herumlinken.
Also dabei ist das Problem, dass zwar die zweite Seite erzeugt wird, aber leider wird nur eine leere Seite angezeigt, weil der Link ins leere zeigt.
//Edit 2:
http://doc.trolltech.com/4.6/qtextbrows ... ource-prop
kann man damit irgentwie das andere Dokument erreichen?
Es wuerde auch reichen, wenn einfach eine neue leere Seite durch einen Link erreicht wird, so was wie eine unterseite z.b. home/page1

Verfasst: 15. August 2010 08:47
von franzf
Du musst doch einfach nur selber die Kontrolle über das Link-Öffnen übernehmen, wenn du eigene Link-Commands und normale Links hast. Setze openLinks und openExternalLinks auf false. Deine Links setzt du mit "<a href="internal://person">Klick</a>". Im on_anchorClicked() frägst du nach url.scheme(), wenn es "internal" ist kannst du mit "url.path()" nach "person" fragen und ein entsprechendes neues Document laden. Ansonsten setzt du mit "browser.setSource(url);" die geclickte URL.
So schwer?

Verfasst: 15. August 2010 21:49
von Nvidia
die rettung danke danke