2011-12-08 37 views

Trả lời

74

QLabel does this already.

Mẫu mã:

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

nó vì một lý do kỳ lạ không muốn cư xử như nó nên. Làm thế nào để bạn thiết lập fnc/action nó nên gọi? – user336635

+1

Bạn không. Khi 'openExternalLinks()' là true và các cờ tương tác văn bản được thiết lập một cách công phu, 'QDesktopServices :: openUrl()' được kích hoạt mang URL của nhãn. – cmannett85

+0

cảm ơn +1. Bạn có biết nếu tôi có thể gọi thông qua cuộc gọi fnc thông thường này – user336635

7

Câu trả lời từ cmannnett85 là tốt nếu bạn chỉ muốn mở một URL khi liên kết được nhấp, và bạn là OK với nhúng URL trong lĩnh vực văn bản của nhãn. Nếu bạn muốn làm một cái gì đó hơi tùy chỉnh, làm điều này:

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

Sau đó, bạn có thể kết nối linkActivated tín hiệu của nhãn để một khe cắm, và làm bất cứ điều gì bạn muốn trong vùng đó. (Câu trả lời này giả sử bạn có quen cơ bản với các tín hiệu và khe cắm Qt của.)

Khe có thể trông như thế này:

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

Cảm ơn rất nhiều. nó hoạt động. –

Các vấn đề liên quan