【发布时间】:2012-01-15 16:19:42
【问题描述】:
如何使 QLabel 表现得像一个链接?我的意思是我希望能够点击它,然后它会调用一些命令。
【问题讨论】:
如何使 QLabel 表现得像一个链接?我的意思是我希望能够点击它,然后它会调用一些命令。
【问题讨论】:
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);
【讨论】:
openExternalLinks() 为真并且文本交互标志被适当设置时,QDesktopServices::openUrl() 被触发携带标签的 URL。
QDesktopServices::openUrl(),那么您可以自己调用。
如果您只想在单击链接时打开一个 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/"));
}
【讨论】: