19

我想在我的这个应用程序中处理对链接的点击:

我的应用程序

当我单击“输出文件”链接时,我希望能够在我的应用程序中生成一个动作。

截至今天,该链接在富文本 QLabel 中是这样描述的:

<a href="http://google.fr"><span style=" text-decoration: underline; color:#0000ff;">Output File&quot;</span></a>

(由 Qt 设计器生成)

单击后,它将打开默认的网络浏览器以转到 Google。那不是我想要的。我想要类似的东西:

<a href="#browse_output"><span style=" text-decoration: underline; color:#0000ff;">Output File&quot;</span></a>

并且能够检测到被点击的链接并做出相应的反应:

(pseudo code)

if( link_clicked.toString() == "#browse_output" ){
    on_browse_output_clicked();
}

这在带有 QLabel (或接近的东西)的 Qt 中是否可能?如何?

4

1 回答 1

37

好的,对于那些感兴趣的人,我得到了答案:

  1. 禁用“ openExternalLinks”属性QLabel
  2. 将信号linkActivated连接QLabel到您的处理程序。

就是这样:linkActivated为您提供链接在参数中引用的 URL,因此我的伪代码可以完美运行。

// header
private slots:
  void on_description_linkActivated(const QString &link);

// cpp
void KernelBuild::on_description_linkActivated(const QString &link)
{
  if( link == "#browse_output" ){
    on_outfilebtn_clicked();
  }
}
于 2013-05-16T07:37:21.900 回答