【问题标题】:Making QLabel behave like a hyperlink使 QLabel 表现得像一个超链接
【发布时间】:2012-01-15 16:19:42
【问题描述】:

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

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

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

    【讨论】:

    • 它出于某种奇怪的原因不想表现得像它应该的那样。你如何设置它应该调用的 fnc/action?
    • 你没有。当openExternalLinks() 为真并且文本交互标志被适当设置时,QDesktopServices::openUrl() 被触发携带标签的 URL。
    • 感谢 +1。你知道我是否可以通过这个常规 fnc 调用调用
    • 如果 Qlabel 所做的只是调用 QDesktopServices::openUrl(),那么您可以自己调用。
    【解决方案2】:

    如果您只想在单击链接时打开一个 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/"));
    }
    

    【讨论】:

      猜你喜欢
      • 2013-04-14
      • 2010-11-22
      • 1970-01-01
      • 2020-03-23
      • 2015-06-04
      • 2016-12-17
      • 1970-01-01
      • 2018-10-17
      相关资源
      最近更新 更多