Hyperlink zum Browser

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Jan42
User
Beiträge: 14
Registriert: Dienstag 24. Februar 2009, 20:20

Freitag 20. März 2009, 14:58

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?
Jan42
User
Beiträge: 14
Registriert: Dienstag 24. Februar 2009, 20:20

Freitag 20. März 2009, 18:21

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.
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Freitag 20. März 2009, 19:44

Such mal bei \PyQt4\examples da ist ein Beispiel, weiß aber nicht genau wo
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
jerch
User
Beiträge: 1630
Registriert: Mittwoch 4. März 2009, 14:19

Freitag 20. März 2009, 22:59

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.
Jan42
User
Beiträge: 14
Registriert: Dienstag 24. Februar 2009, 20:20

Samstag 21. März 2009, 11:11

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?
jerch
User
Beiträge: 1630
Registriert: Mittwoch 4. März 2009, 14:19

Samstag 21. März 2009, 11:26

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.
Jan42
User
Beiträge: 14
Registriert: Dienstag 24. Februar 2009, 20:20

Samstag 21. März 2009, 11:33

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.
jerch
User
Beiträge: 1630
Registriert: Mittwoch 4. März 2009, 14:19

Samstag 21. März 2009, 11:50

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>)
jerch
User
Beiträge: 1630
Registriert: Mittwoch 4. März 2009, 14:19

Samstag 21. März 2009, 12:01

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.
Antworten