如何將一個定位點<a>
置入whatsThis
中,以獲取點擊它的攔截對象?Qt Whats This使用鏈接/定位器
我知道QLabel中的linkActivated
或QTextBrowser中的linkClicked
,但我不知道如何使用Whats This Text來做同樣的事情。
爲了清楚起見,我想知道如果沒有攔截幫助事件和管理我自己的WhatsThis機制,這是否可能。
如何將一個定位點<a>
置入whatsThis
中,以獲取點擊它的攔截對象?Qt Whats This使用鏈接/定位器
我知道QLabel中的linkActivated
或QTextBrowser中的linkClicked
,但我不知道如何使用Whats This Text來做同樣的事情。
爲了清楚起見,我想知道如果沒有攔截幫助事件和管理我自己的WhatsThis機制,這是否可能。
如果我理解你的問題,那就是你想知道這個是否有SIGNAL()
。似乎沒有。看來你已經觀看了QWhatsThisClickedEvent
通過導出自己的Widget類或具有某種全局過濾的:
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);
}
我採取了這種方法。我已經在我的應用程序類中有一個自定義的「notify」函數,所以我只是看着'QWhatsThisClickedEvent'。我只是將Url傳遞給'QDesktopServices :: openUrl'並讓普通機制接管(爲此我已經有了一個鉤子)。奇怪這不是默認行爲。 –
看起來很奇怪,但有一個默認行爲,讓潛在的文本注入在系統上啓動另一個應用程序可能被認爲是某種安全風險...?再一次,我可能讀得太多了。 :) – HostileFork