如何将锚点<a>
放入小部件的whatsThis
中,并拦截其被点击?
我知道在QLabel中有linkActivated
,在QTextBrowser中有linkClicked
,但我不知道如何在Whats This文本中实现相同的功能。
明确一下,我想知道是否可以在不拦截帮助事件并自行管理WhatsThis机制的情况下实现此操作。
SIGNAL()
可以实现这个功能。似乎没有。你需要通过派生自己的小部件类或使用某种全局过滤器来观察QWhatsThisClickedEvent
事件:http://qtcentre.org/archive/index.php/t-7394.html。值得注意的是,在Qt源代码中发出QWhatsThisClickedEvent
的实际点在这里: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);
}
QWhatsThisClickedEvent
。我只是将 Url 传递给QDesktopServices::openUrl
,然后让正常机制接管(对此我已经有一个钩子)。奇怪的是这不是默认行为。 - edA-qa mort-ora-y