2011-12-08 13 views

Odpowiedz

74

QLabel does this already.

Przykładowy kod:

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

to dla niektórych dziwne powodu nie chce zachowywać się jak należy. Jak ustawić fnc/akcję, którą ma wywoływać? – user336635

+1

Ty nie. Gdy parametr 'openExternalLinks()' ma wartość true, a flagi interakcji tekstowych są ustawione osobno, uruchamiane jest 'QDesktopServices :: openUrl()', przenoszące adres URL etykiety. – cmannett85

+0

dzięki +1. Czy wiesz, czy mogę wywołać za pomocą tego zwykłego połączenia fnc – user336635

7

Odpowiedź z cmannnett85 jest w porządku, jeśli chcesz po prostu otworzyć URL po kliknięciu łącza, a ty jesteś OK z osadzania tego adresu URL w polu tekstowym na etykiecie. Jeśli chcesz zrobić coś nieco niestandardowych, to zrobić:

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

Następnie można podłączyć sygnał etykiety linkActivated do gniazda, i robić, co chcesz w tym gnieździe. (Odpowiedź ta zakłada, masz podstawową znajomość sygnałów i slotów Qt.)

Szczelina może wyglądać mniej więcej tak:

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

Dziękuję bardzo. to działało. –

Powiązane problemy