2011-12-08 8 views

risposta

74

Qlabel does this already.

codice di esempio:

myLabel->setText("<a href=\"http://example.com/\">Click Here!</a>"); 
myLabel->setTextFormat(Qt::RichText); 
myLabel->setTextInteractionFlags(Qt::TextBrowserInteraction); 
myLabel->setOpenExternalLinks(true); 
+0

per qualche strana ragione non vuole comportarsi come dovrebbe. Come si imposta il fnc/l'azione da richiamare? – user336635

+1

Non lo fai. Quando 'openExternalLinks()' è true e i flag di interazione del testo sono impostati in modo appropriato, 'QDesktopServices :: openUrl() 'viene attivato portando l'URL dell'etichetta. – cmannett85

+0

grazie +1. Sapresti se posso invocare tramite questa normale chiamata fnc – user336635

7

La risposta da cmannnett85 va bene se si desidera solo per aprire un URL in cui il link viene cliccato, e tu sei OK con l'incorporamento tale URL nel campo di testo dell'etichetta. Se si vuole fare qualcosa di leggermente personalizzato, fare questo:

QLabel * myLabel = new QLabel(); 
myLabel->setName("myLabel"); 
myLabel->setText("<a href=\"whatever\">text</a>"); 
myLabel->setTextInteractionFlags(Qt::TextBrowserInteraction); 

quindi è possibile collegare il segnale linkActivated dell'etichetta ad uno slot, e fare quello che vuoi in quello slot. (Questa risposta presuppone che la familiarità di base con i segnali e gli slot di Qt.)

Lo slot potrebbe essere simile a questo:

void MainWindow::on_myLabel_linkActivated(const QString & link) 
{ 
    QDesktopServices::openUrl(QUrl("http://www.example.com/")); 
} 
+0

Grazie mille. ha funzionato –

Problemi correlati