Russian Qt Forum

Qt => Вопросы новичков => Тема начата: impus от Март 27, 2012, 14:38



Название: help через qt
Отправлено: impus от Март 27, 2012, 14:38
Общая картина:
Сейчас существует все для ведения хэлпа в виде .chm файла: html, картинки, служебные файлы для chm(содержание, список ключевых слов). Поступила задача перевести это все на кросс-платформенную основу с уточнением: использовать qt. Вот такое ТЗ

Я новичок в программировании. Поэтому плохо ориентируюсь...

Нашел вот такую статью (http://doc.crossplatform.ru/qt/4.7.x/qthelp-framework.html)
Если правильно все понимаю, то нужно просто сформировать свои служебные файлы для qthelp (хоть в блокноте), а потом скормить компилятору хэлпа qhelpgenerator. Получится файлик .qhp, который будет открываться Qt Assistent'ом. Вопрос: в каком из пакетов Qt можно найти этот qhelpgenerator? Qt Assistent компилится под каждую ОС? В Qt Creator существуют инструменты для работы с этими своими служебными файлами? У меня с creator'ом проблемы возникли: среду не смог настроить (

Подскажите, пожалуйста, как это может еще выглядеть?
Проконсультируйте, пожалуйста. Спасибо


Название: Re: help через qt
Отправлено: QuAzI от Март 27, 2012, 15:10
Цитировать
Если правильно все понимаю, то нужно просто сформировать свои служебные файлы для qthelp (хоть в блокноте), а потом скормить компилятору хэлпа qhelpgenerator. Получится файлик .qhp, который будет открываться Qt Assistent'ом. Вопрос: в каком из пакетов Qt можно найти этот qhelpgenerator? Qt Assistent компилится под каждую ОС? В Qt Creator существуют инструменты для работы с этими своими служебными файлами?
Да, создаётся 4 файла практически ручками (часть из них может ваять на лету какой-нибудь Doxygen), но можно и тыкать прямо в html-файлы. Это веб-браузер, он поймёт.
qhelpgenerator при полной установке SDK на Win там же, где и ассистент, для Qt 2010.5 например это \Qt\2010.05\qt\bin\qhelpgenerator.exe

Я для себя переписал маленько пример идущий с Qt в examples.
Для каждого графического элемента определяю свойство whatsThis , снимаю птиц переводчика для этого свойства и на всю форму по F1 вызывается один метод
Код:
//! \brief Меню - Справка
void MainWindow::on_action_Content_help_triggered()
{
    HelpBrowser *helpBrowser = new HelpBrowser(this);
    if (!helpBrowser->showHelpByTag(this->focusWidget()->whatsThis())) /// Поиск справки к активному элементу
      if (!helpBrowser->showHelp(this->whatsThis()))  /// Показать справку к окну, если нет справки к элементу
        if (!helpBrowser->showHelp()) /// Показать общую справку если вообще ничего нет
            QMessageBox::about(this, tr("Help Error"),
                               tr("<p><b>Can't find help file !!!</b></p>" ));
}


Название: Re: help через qt
Отправлено: impus от Март 27, 2012, 15:27
Спасибо
для начала поставлю SDK...


Название: Re: help через qt
Отправлено: impus от Март 29, 2012, 22:46
ура. кое-что получилось: файлик хелпа генерится и открывается...

проблема в том, что если в файлах проекта присутвуют русские символы, проект не собирается.
и если убрать все русские символы, собрать, то сраницы html - все равно ведь русскоязычные... и там целые страницы крякозябр получаются (((

как эту проблему решить, не подскажете?


Название: Re: help через qt
Отправлено: kambala от Март 29, 2012, 22:51
переделай файлы в UTF-8


Название: Re: help через qt
Отправлено: impus от Март 29, 2012, 22:54
о!
Спасибо большое ))


Название: Re: help через qt
Отправлено: impus от Апрель 06, 2012, 09:36
Господа, теперь у меня проблема с портированием qhelpcollectiongenerator.exe... Что можно сделать, чтобы хэлп собирался на другой машине? Ну кроме установки на ней Qt SDK...))

сам по себе qhelpcollectiongenerator.exe можно перенести в другую директорию с десятком dll за компанию. И на моей машине запускается. Собираю через MicrosoftVisualStudio2008. Усе работает:
1>Performing Custom Build Step
1>Reading collection config file...
1>Generating help for help_rus.qhp...
1>Building up file structure...
1>Insert custom filters...
1>Insert help data for filter section (1 of 1)...
1>Insert files...
1>Insert contents...
1>Insert indices...
1>Documentation successfully generated.
1>Generating help for help_eng.qhp...
1>Building up file structure...
1>Insert custom filters...
1>Insert help data for filter section (1 of 1)...
1>Insert files...
1>Insert contents...
1>Insert indices...
1>Documentation successfully generated.
1>Creating collection file...
1>Performing Post-Build Event...
1>Скопировано файлов:         1.
1>Скопировано файлов:         1.
1>Скопировано файлов:         1.
1>rdo_help - 0 error(s), 0 warning(s)

На чужой эта пачка файлов при поптыке компиляции выдает такое:
Performing Custom Build Step
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
Reading collection config file...
Generating help for help_rus.qhp...
Building up file structure...
Cannot open data base file C:/dev_help/app/help_mfc/help\help_rus.qch!
Performing Post-Build Event...
Не удается найти указанный файл.
Не удается найти указанный файл.
Не удается найти указанный файл.
Project : error PRJ0019: A tool returned an error code from "Performing Post-Build Event..."
rdo_help - 1 error(s), 0 warning(s)


очень не хочется ставить SDK... (((


Название: Re: help через qt
Отправлено: QuAzI от Апрель 06, 2012, 09:58
Строка QSqlDatabase: QSQLITE driver not loaded на мысли не наводит? Для работы справки в родном для Qt формате обязательно нужен драйвер SQLite.


Название: Re: help через qt
Отправлено: impus от Апрель 09, 2012, 22:36
есть желание каким-то прекрасным образом сделать так, чтобы вместе с assistant.exe и qcollectiongenerator.exe лежали как просто два файлика, а не два файлика + 15 dll...
как можно пересобрать assistant.exe?

*напоминаю, я слаб в программировании(*


Название: Re: help через qt
Отправлено: V1KT0P от Апрель 09, 2012, 22:43
есть желание каким-то прекрасным образом сделать так, чтобы вместе с assistant.exe и qcollectiongenerator.exe лежали как просто два файлика, а не два файлика + 15 dll...
как можно пересобрать assistant.exe?

*напоминаю, я слаб в программировании(*
Гугли "Статическая сборка".


Название: Re: help через qt
Отправлено: impus от Апрель 09, 2012, 22:43
хм.. спасибо )


Название: Re: help через qt
Отправлено: impus от Апрель 20, 2012, 18:39
есть способ выгружать из памяти библиотеки QT?
мне надо подобрать такой абор dll, чтобы был необходимый и достаточный набор.
просто после одного запуска ассистента они засаживаются в память и эксперимента чистого не получается. чтобы был чистый - нужен ребут. а это накладно. есть способ выгнать их из памяти?


Название: Re: help через qt
Отправлено: impus от Апрель 20, 2012, 19:01
мож, кто встречался с тем, что qt assitent отказывается работать с таким вот javascript'ом:
function toggle_display(e)
{
    if (e.style.display == "none")
        e.style.display = "";
    else
        e.style.display = "none";
    return false;
}

ну и вызов его:
<A onclick="return toggle_display(v1);">Примеры</A>
<DIV style="display:none" id="v1">...</DIV>

браузер его глотает и работает на ура. а assistent  не хочет (( и это при том, что скрипты типа document.write('....'); он глотает нормально. есть идеи?