text darstellung mit clickbaren internet links
text darstellung mit clickbaren internet links
hallo,
ich wuerde gerne ein wenig text in einem textbrowser darstellen, dieser text beinhaltet webseiten-addressen die auch anklickbar sein sollten.
im assistant stellt es sich fuer mich zunaechst so dar, als waere der QTextBrowser dafuer geeignet aber irgendwie bekomm ich es nicht zustande.
hat jemand mal ein beispiel code-schnipsel fuer solch ein widget und der darstellung darin? (muss jetzt nicht unbedingt mit QTextBrowser sein.)
mfg qt fan
ich wuerde gerne ein wenig text in einem textbrowser darstellen, dieser text beinhaltet webseiten-addressen die auch anklickbar sein sollten.
im assistant stellt es sich fuer mich zunaechst so dar, als waere der QTextBrowser dafuer geeignet aber irgendwie bekomm ich es nicht zustande.
hat jemand mal ein beispiel code-schnipsel fuer solch ein widget und der darstellung darin? (muss jetzt nicht unbedingt mit QTextBrowser sein.)
mfg qt fan
Der QTextBrowser ist IMHO nur geeignet, um ein kleines Hilfesystem für die eigene Applikation (mit lokalen HTML-Files) zu bauen... aber nicht um Internet-Links zu öffnen. Dazu kannst du ja das neue Webkit verwenden:
das kann, was du möchtest..
Code: Alles auswählen
http://doc.trolltech.com/4.4/qwebview.html#setHtml
hallo, danke fuer den tip, aber diese loesung bietet mehr als ich brauche. hab mich damit zwar noch nich eingehend beschaeftigt, aber ich vermute deine loesung laeuft darauf hinaus dass ich die links auch selbst in meiner applikation darstelle.solarix hat geschrieben:Der QTextBrowser ist IMHO nur geeignet, um ein kleines Hilfesystem für die eigene Applikation (mit lokalen HTML-Files) zu bauen... aber nicht um Internet-Links zu öffnen. Dazu kannst du ja das neue Webkit verwenden:das kann, was du möchtest..Code: Alles auswählen
http://doc.trolltech.com/4.4/qwebview.html#setHtml
um es genauer zu formulieren, ich will eigl sowas:
man sieht ne zeile text
foo bar: www.foo bar.com
und dann kann man www.foo bar.com anklicken und der eigene browser (konqueror mozilla oder so) geht daraufhin auf und zeigt die page an. letztendlich soll es sogar der gewohnheitsmaessige browser des users sein der aufgeht, da die pages ja auch schonmal im lesezeichen landen koennten/sollen.
mfg qt fan
-
-=Freaky=-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
du kannst auch im QTextBrowser setHtml benutzen.
eventuell gibt es einen viiiel einfacheren weg, ich hab mich selbst damit noch nicht grossartig beschaeftigt,
aber man koennte bspw. bei textChange (oder wie das signal auch heissen mag) per QRegExp oder sowas auf links im text checken, die entspr. "<a href="dieURL">dieURL</a>" tags drumpacken und das ganze mit setHtml neu setzen.
klingt IMHO relativ umstaendlich, aber was besseres faellt mir nicht ein
.
... und es sind nur ein paar zeilen.
mfg,
julian
eventuell gibt es einen viiiel einfacheren weg, ich hab mich selbst damit noch nicht grossartig beschaeftigt,
aber man koennte bspw. bei textChange (oder wie das signal auch heissen mag) per QRegExp oder sowas auf links im text checken, die entspr. "<a href="dieURL">dieURL</a>" tags drumpacken und das ganze mit setHtml neu setzen.
klingt IMHO relativ umstaendlich, aber was besseres faellt mir nicht ein
... und es sind nur ein paar zeilen.
mfg,
julian
Dann ist der TextBrowser wohl doch die bessere Lösung. Da musst du dem widget vermutlich nur mit "setOpenExternalLinks(true)" beibringen, dass es mit den DesktopServices die URL öffnen soll (default ist ja false..)
siehe
http://doc.trolltech.com/4.4/qtextbrows ... Links-prop
http://doc.trolltech.com/4.4/qdesktopse ... ml#openUrl
hallo, wegen dem #anchor im assistant hatte ich als erstes gedacht dass der qtextbrowser gerade das ist was ich suche.myme hat geschrieben:Tip: anchorClicked Signal abfangen und Browser mit Url starten
Steht aber auch in der Doku.
jetzt probier ich es so:
QString str("bar foo#anchor");
ui.textBrowser->setText(str);
und wenn ich den textbrowser anzeige dann steht da bar foo#anchor aber ich kann da nix klicken. weiter weiss ich irgendwie nicht, kannst du mir das mal naeher erlaeutern?
mfg qt fan
Oder auch die beta version 2 von http://code.google.com/p/fop-miniscribus/myme hat geschrieben:Schau dir im Assistant mal weiteres zum Thema "RichText/Q3StyleSheet" an. Einen Anker setzt man zB <a name="anchor">
dort werden anker sogar fuer pdf bookmark gesetzt. und naturlich auch
QTextCharFormat chformat = block.charFormat();
QStringList dests = chformat.anchorNames();
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt
-
-=Freaky=-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
wieder was dazugelerntqt fan hat geschrieben:hallo, mit setOpenExternalLinks(1), geht das super. vielen dank.-=Freaky=- hat geschrieben:du kannst auch im QTextBrowser setHtml benutzen....
jetz wuesst ich nur gern wie man nen zeilenumbruch mit html ausdrueckt.
<p>...</p><p>...</p> ergibt irgendwie immer 2 zeilenumbrueche.
danke.
mfg,
julian
hab jetzt mal alles zu rich text processing gelesen. und das probiertmyme hat geschrieben:Schau dir im Assistant mal weiteres zum Thema "RichText/Q3StyleSheet" an. Einen Anker setzt man zB <a name="anchor">
Code: Alles auswählen
#include "textbrowsertest.h"
#include<QDebug>
textbrowsertest::textbrowsertest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.textBrowser->setHtml("<a name="anchor">lololol</a>"
"<br>lololol");
connect(ui.textBrowser,SIGNAL(anchorClicked (const QUrl&)),this,SLOT(aclicked(const QUrl&)));
}
textbrowsertest::~textbrowsertest()
{
}
void textbrowsertest::aclicked(const QUrl &u){
qDebug()<<"anchor clicked"<<u.toString();
}
naja wenn du noch was lernen willst: ich hab mitlerweile eine andere (auch effektive) loesung, du kannst nem qtextcursor ein QTextCharFormat zuweisen. dieses muss nur auf setanchor(1) gesetzt werden. dann sind die texte die aus diesem cursor kommen abfangbare "click texte".-=Freaky=- hat geschrieben:[wieder was dazugelernt
danke.
mfg,
julian
Wenn du nur externe Links öffnen willst ist QTextEdit besser geeignet, da einfacher und schneller. Je nachdem was du machen willst könnte sogar ein QLabel ausreichen. Links werden dort überall automatisch im Browser geöffnet, bei QTextBrowser ist dies nicht der Fall, weil er denke ich für interne/eigene Navigationsfunktionalitäten ausgelegt ist.
MfG,
FaS
MfG,
FaS
also wenn ich es so mach:FaS hat geschrieben:Wenn du nur externe Links öffnen willst ist QTextEdit besser geeignet, da einfacher und schneller...
ui.textEdit->setTextInteractionFlags(Qt::LinksAccessibleByMouse); ui.textEdit->setHtml("<p><a href=http://www.trolltech.de>text</a></p>");
dann erscheint der link zwar blau unterstrichen und ich kann mit nem rechts click ein menu oeffnen dass mich den link kopieren laesst, aber bei linksklick passiert nix.
der assistant beschreibt es gerade umgekehrt:
The QTextBrowser class provides a rich text browser with hypertext navigation.
This class extends QTextEdit (in read-only mode), adding some navigation functionality so that users can follow links in hypertext documents.
If you want to provide your users with an editable rich text editor, use QTextEdit. If you want a text browser without hypertext navigation use QTextEdit, and use QTextEdit::setReadOnly() to disable editing. If you just need to display a small piece of rich text use QLabel.