2011-12-08 172 views

回答

74

QLabel does this already

示例代碼:

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

其理由很奇怪,不想表現得像它應該。你如何設置它應該調用的fnc/action? – user336635

+1

你不知道。當'openExternalLinks()'爲true且文本交互標誌apprpriately設置,'QDesktopServices ::的OpenURL()'被觸發攜帶標籤的URL。 – cmannett85

+0

感謝+1。你知道我是否可以通過這個普通的fnc調用 – user336635

7

從cmannnett85答案是好的,如果你只是想鏈接被點擊時打開一個URL,你是嵌入該URL的標籤的文本字段確定。如果你想要做的事稍微定製,這樣做:

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

然後你就可以在標籤的linkActivated信號連接到插槽中,做任何你該插槽希望。 (這個回答假設你有Qt的信號和槽基本的瞭解。)

插槽可能是這個樣子:

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

感謝了很多。它的工作。 –