Qt这是使用链接/锚

Qt Whats This using a link/anchor

本文关键字:链接 Qt      更新时间:2023-10-16

如何将锚<a>放入小部件的whatsThis中以拦截它被单击?

我知道在QLabel中的linkActivated,或在QTextBrowser中的linkClicked,但我不知道如何用what This text做同样的事情。

要清楚,我想知道如果没有拦截帮助事件和管理我自己的WhatsThis机制,这是可能的。

如果我理解你的问题,那就是你想知道是否有一个SIGNAL()。似乎没有。似乎您必须通过派生自己的Widget类或使用某种全局过滤器来监视QWhatsThisClickedEvent:

http://qtcentre.org/archive/index.php/t - 7394. - html

仅供参考,QWhatsThisClickedEvent在Qt源中发出的实际点在这里:

http://qt.gitorious.org/qt/qt/blobs/4.7/src/gui/kernel/qwhatsthis.cpp line264

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