使QLabel表现得像一个超链接

use*_*635 34 c++ qt

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

cma*_*t85 92

QLabel 已经这样做了.

示例代码:

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

  • 你不知道 当`openExternalLinks()`为true并且适当设置了文本交互标志时,会触发`QDesktopServices :: openUrl()`携带标签的URL。 (2认同)

Dav*_*son 14

从cmannnett85答案是好的,如果你只是想链接被点击时打开一个URL,你是嵌入该URL的标签的文本字段确定.如果您想稍微做一些自定义的事情,请执行以下操作:

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

然后,您可以将linkActivated标签的信号连接到插槽,并在该插槽中执行任何操作.(这个答案假设你基本熟悉Qt的信号和插槽.)

插槽可能看起来像这样:

void MainWindow::on_myLabel_linkActivated(const QString & link)
{
    QDesktopServices::openUrl(QUrl("http://www.example.com/"));
}
Run Code Online (Sandbox Code Playgroud)