2011-07-16 82 views
3

我在Mac OS X上构建Qt应用程序,并决定创建帮助手册。我试图使用official docs,但帮助手册未显示在帮助菜单中。在Qt应用程序中注册帮助手册

帮助手册位于my.app/Contents/Resources/HC.help/。它本身似乎很好,我试着直接用HelpViewer.app打开它,它打开得很好。

这是怎么了注册它my.app/Contents/Info.plist

<key>CFBundleHelpBookFolder</key> 
<string>HC.help</string> 
<key>CFBundleHelpBookName</key> 
<string>com.houbysoft.hc.help</string> 

它仍然没有在我的应用程序的帮助菜单中出现。怎么了?

回答

0

问了这个问题已经有五年了,但我只是想出了如何去做,所以我想我会分享我的发现。

除了向Info.plist添加提到的@houbysoft键之外,还需要手动将菜单项添加到调用帮助查看器的“帮助”菜单。

所以示例代码(在QMainWindow中的初始化):

QMenu *helpMenu = new QMenu("Help", menuBar()); 
helpMenu->addAction(tr("&XYZ Help..."), this, SLOT(showHelp())); 

(或者你也可以添加菜单项一些其他的方式,可能使用设计器。)

的showHelp()方法:

void openHelp() 
{ 
    CFBundleRef appBundle = CFBundleGetMainBundle(); 

    if (appBundle == NULL) { 
     return; 
    } 

    CFStringRef myBookName = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(appBundle, CFSTR("CFBundleHelpBookName")); 

    if (!myBookName || CFGetTypeID(myBookName) != CFStringGetTypeID()) { 
     return; 
    } 

    AHLookupAnchor(myBookName, CFSTR("Start")); 
} 

请注意,我在文档的第一页添加了一个名为“Start”的锚点。将"Start"替换为您自己的锚的名称。