2011-07-13 78 views
7

我將我的Qt應用程序移植到Mac OS X上。在Windows/Linux上,我使用QLineEdit在幫助菜單中提供搜索功能。Mac上的Qt - 如何訪問幫助菜單中的「搜索」

在Mac OS X中,我看到了這樣的事情是內置: enter image description here

如何訪問使用Qt這個搜索欄(即添加自己的元素的話)?我在文檔中查看了QMenuBar,但找不到任何相關的內容。如果這是不可能的,我可以至少從我的C++ Qt應用程序中使用一些本地API嗎?

非常感謝。

+5

+1關心提供平臺一致的體驗。 –

回答

3

看來你不能直接通過Qt來完成,但是,你可以在Objective-C++/Cocoa中實現這一功能。

通過NSApplication的- registerUserInterfaceItemSearchHandler方法可以註冊用於查詢和返回搜索項目的自定義函數。

QtHelp似乎支持自動索引,這意味着您可以將搜索委託給該索引。

4

這是聚光燈幫助搜索字段,完全由系統控制。它會自動提供應用程序幫助簿和菜單項的結果。 AFAIK你不能「手動」填充它。它會在您爲應用程序創建幫助手冊時自動運行。

參見Apple Help Concepts: The Help Menu

+0

給你一個+1,看起來像這是我唯一的選擇。我將等待一天,看看是否沒有辦法直接從程序中完成,否則我會接受。 – houbysoft

+1

剛剛發現在終端應用程序中,幫助菜單還顯示手冊頁。嘗試在終端的聚光燈搜索字段中輸入「man」。然後,如果您點擊它,它會打開一個顯示手冊頁的新終端窗口。因此,它似乎可能是手動填充的?手冊頁不在幫助手冊和菜單項目中。 – houbysoft

+0

嗯,非常有趣!對不起,我不知道這是一個公共API。 – deceze

3

如果您嚮應用程序添加「幫助」菜單,Qt將自動添加搜索框。請參閱http://doc.qt.io/qt-4.8/mac-differences.html#menu-bar

+0

是的,它是自動添加的,但我需要的是將我自己的項目添加到它 - 看起來像我必須創建一個幫助手冊根據欺騙的答案下面。現在它只在菜單項中搜索。 – houbysoft

1

您可以擺脫搜索菜單Mac OSX通過簡單地通過調用其他菜單來添加到幫助菜單。只是增加一個空間:

QMenu *helpMenu = menuBar()->addMenu(" Help")); 

將工作。