在Qt app中注册帮助手册

时间:2011-07-16 02:42:10

标签: c++ qt macos menu helpfile

我正在Mac OS X上构建一个Qt应用程序,我决定创建一个帮助手册。我尝试使用official docs,但帮助手册没有显示在帮助菜单中。

帮助手册位于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>

它仍未显示在我的应用程序的“帮助”菜单中。怎么了?

1 个答案:

答案 0 :(得分:0)

问这个问题已经五年了,但我刚刚弄清楚如何做到这一点,所以我想我会分享我的发现。

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

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

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

(或者您可以使用其他方式添加菜单项,也许使用Designer。)

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"替换为您自己锚点的名称。