使QLabel表现得像一个超链接

时间:2011-12-08 07:11:01

标签: c++ qt

如何让QLabel表现得像一个链接?我的意思是我希望能够点击它,然后这将调用它上面的一些命令。

2 个答案:

答案 0 :(得分:85)

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);

答案 1 :(得分:12)

如果您只想在点击链接时打开URL,cmannnett85的答案就可以了,您可以将该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/"));
}