Legen Sie anklickbaren link in QLabel und zu erkennen, klicken Sie auf diesen link, um eine Aktion zu provozieren
Möchte ich verarbeiten, klicken Sie auf den link in dieser Anwendung von mir:
Wenn ich auf den "Output File" - link, ich möchte in der Lage sein zu generieren, die eine Aktion in meiner Anwendung.
Als heute, der link ist beschrieben, wie diese in der rich-text-QLabel:
<a href="http://google.fr"><span style=" text-decoration: underline; color:#0000ff;">Output File"</span></a>
(erzeugt mit dem Qt Designer)
Wenn geklickt, öffnen Sie die Standard-web-browser, gehen Sie zu Google. Das ist nicht das, was ich will; ich möchte so etwas wie:
<a href="#browse_output"><span style=" text-decoration: underline; color:#0000ff;">Output File"</span></a>
Und in der Lage sein zu erkennen, den link angeklickt und entsprechend reagieren:
(pseudo code)
if( link_clicked.toString() == "#browse_output" ){
on_browse_output_clicked();
}
Ist das möglich in der Qt mit einem QLabel (oder etwas nähert) ? Wie?
- Sie können versuchen, filtern von Ereignissen für QLabel, aber ich bin mir nicht sicher, wie Sie wissen, wo der link ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, für den sich Interessierte, bekam ich die Antwort:
openExternalLinks
" - Eigenschaft desQLabel
QLabel
an Ihren handler.Das ist alles:
linkActivated
gibt Sie die URL, die der link verweist in der Argumentation, so ist mein pseudo-code funktioniert perfekt.item->setTextInteractionFlags(Qt::TextBrowserInteraction); item->setOpenExternalLinks(true); item->setHtml(/*whatever*/);
. In diesem Beispiel arbeitenitem
ist einQGraphicsTextItem*
. Keine Notwendigkeit fürQDesktopServices::openUrl
oder benutzerdefinierte Signale / Handler.