Seite 1 von 1

Hyperlink zum Browser

Verfasst: Freitag 20. März 2009, 14:58
von Jan42
Hi,
ich bins nochmal. In Sachen Infoprojekt hab ich jetzt fast alles geschafft. Ich habe im Internet nach einer Erklärung gesucht, wie man Hyperlinks erstellt, die einen Browser öffnen, wenn man auf bestimmte Texte klickt. Kann mir jemand möglichst deutsche Dokus empfehlen und mal ein Beispiel geben?

Verfasst: Freitag 20. März 2009, 18:21
von Jan42
Nicht das sich einige wundern, warum das hier rein kommt. Die Aussabe der Links erfolgt mit PyQt4. Ich weiß nicht ob es hier abweicht im Gegensatz zu anderen.

Verfasst: Freitag 20. März 2009, 19:44
von INFACT
Such mal bei \PyQt4\examples da ist ein Beispiel, weiß aber nicht genau wo

Verfasst: Freitag 20. März 2009, 22:59
von jerch
Schau mal unter QDesktopServices::openUrl(), das öffnet Dir einen Browser für externe Links. Falls Du den Text mit QTextBrowser darstellst, reicht es, openExternalLinks auf True zu setzen.

Es geht auch mit Python-Boardmitteln, siehe Modul webbrowser.

Verfasst: Samstag 21. März 2009, 11:11
von Jan42
Das Modul webbrowser ist schon was feines, doch was jetzt noch fehlt, ist der Link an sich. Angenommen ich habe eine Variable, die den kompletten Link enthällt. Ich muss ja ein Event definieren, sobald man auf diesen Link klickt. Dazu muss er ja Linktypisch hervorgehoben werden. Dann muss das Event auf webbrowser.open_url verweisen.
Aber das erste sagt mir halt gar nix. Ich hab bis jetzt mit Mühe und Not Signale und Slots verstanden. Kann mit einer bitte ein praktisches Beispiel geben, oder für Anfänger verständlich erklären, wie das geht?

Verfasst: Samstag 21. März 2009, 11:26
von jerch
Wie bringst Du denn den Text zur Anzeige? Mit QTextEdit, QTextBrowser oder von Hand gezeichnet über QPainter? Je nachdem, was Du hier nutzt, bringt Qt für das Linkhandling alles (QTextBrowser) bis gar nix (QPainter) mit. Dem entsprechend unterschiedlich groß ist der Aufwand für Dich, das zu implementieren.

Verfasst: Samstag 21. März 2009, 11:33
von Jan42
Ich habe im Moment nen PlainTextEdit Feld und gebe es mit TextEdit aus.

Noch ne andere Frage gleich hintenan. Gibts ne Möglichkeit den Text den ich ausgeben will, fettgedruckt, oder allgemein formatiert auszugeben? Über Parameter oder so.

Verfasst: Samstag 21. März 2009, 11:50
von jerch
Vorschlag:
Bau Dir ein gültiges HTML-Dokument zusammen (also mit <html>,<head> und <body>) und nimm QTextBrowser zur Darstellung. Für die Links mußt Du dann nur noch openExternalLinks auf True setzen, damit die funktionieren. Stylen kannst Du das Dokument mittels CSS, welches Du dem TextBrowser via setDefaultStyleSheet(<CSS-String>) fütterst.

schematisch:

Code: Alles auswählen

browser = QTextBrowser()
browser.setOpenExternalLinks(True)
browser.document().setDefaultStyleSheet(<Inhalt aus CSS-Datei>)
browser.setHtml(<Html-Doc>)

Verfasst: Samstag 21. März 2009, 12:01
von jerch
Nochwas:
Die HTML-Unterstützung ist nicht komplett umgesetzt im QTextBrowser, so werden einige CSS-Formatierungen nicht funktionieren oder externe Bilder nicht angezeigt (ist halt nur für Richtext gedacht). Letzteres kannst Du mit der Methode loadResource() des QTextBrowsers ermöglichen, mußt hierfür aber eine eigene von QTextBrowser abgeleitete Klasse schreiben, die mittels loadResource() die Bilder holt.

Um "full-featured" HTML-Support zu bekommen, ist es sinnvoll, auf QWebKit auszuweichen.