2011-12-08 106 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

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