Qt Whats This使用链接/锚点。

5

如何将锚点<a>放入小部件的whatsThis中,并拦截其被点击?

我知道在QLabel中有linkActivated,在QTextBrowser中有linkClicked,但我不知道如何在Whats This文本中实现相同的功能。

明确一下,我想知道是否可以在不拦截帮助事件并自行管理WhatsThis机制的情况下实现此操作。

2个回答

6

我采取了这种方法。我的应用程序类中已经有一个自定义的“notify”函数,所以我只是监听了 QWhatsThisClickedEvent。我只是将 Url 传递给 QDesktopServices::openUrl,然后让正常机制接管(对此我已经有一个钩子)。奇怪的是这不是默认行为。 - edA-qa mort-ora-y
看起来很奇怪,但是拥有一个默认行为,让潜在的文本注入启动系统上的另一个应用程序可能被认为是某种安全风险...?不过,我可能读得太多了。 :) - HostileFork says dont trust SE

3

HostileFork的答案基本上说得很对。除非您有自己捕获WhatsThisClicked事件的小部件,否则可以采用一种简单的方法来监听主窗口小部件中的WhatsThisClicked事件。代码非常简单,类似于以下内容:

bool  MyMainWindow::event(QEvent* ev)
{
    if (ev->type() == QEvent::WhatsThisClicked)
    {
        ev->accept();
        QWhatsThisClickedEvent* whatsThisEvent = dynamic_cast<QWhatsThisClickedEvent*>(ev);
        assert(whatsThisEvent);
        QDesktopServices::openUrl(whatsThisEvent->href());
        return true;
    }
    return QMainWindow::event(ev);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接