Регистрация справочной книги в приложении Qt - PullRequest
3 голосов
/ 16 июля 2011

Я создаю приложение Qt в Mac OS X и решил создать книгу справки. Я попытался использовать официальные документы , но книга справки не отображается в меню справки.

Справочная книга находится в 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 голосов
/ 01 декабря 2016

Прошло пять лет с тех пор, как этот вопрос был задан, но я просто решил, как это сделать, и решил, что поделюсь своими результатами.

В дополнение к добавлению ключей @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" именем вашего собственного якоря.

...