Qt (8)-3 Qtヘルプファイルを表示する
公開日| 2009年06月26日 | コメントはまだありません。
カテゴリー:Qt |
概要 : Qtでは、WindowsでいうHTMLヘルプに変わるものとしてQtAssistantがあります。(先の記事でも記載しました。)
前回の記事で、Qtヘルプファイル(qchファイル,qhcファイル)の作成を行いました。
今回の記事では、Qtヘルプファイル(qchファイル,qhcファイル)をアプリケーションでどのように連動表示させるかについて記述します。
関連記事: Qt (8) QtAssistantのGUIの日本語化
関連記事: Qt (8)-2 QtAssistantで使うHELPファイルを作成する
関連記事: http://doc.trolltech.com/4.5/qthelp.html
ここで使用したサンプルソースコード:
ここで使用しているHelpBrowserクラスは、Nokiaの著作物です。
ソースコードに記載のライセンス条項を遵守してご利用ください。
ソースコードに記載のライセンス条項を遵守してご利用ください。
QtAssistantを使って表示する
QtAssistantで表示させるのは、最も、一般的だと思います。まずは、QtAssistantで表示させてみましょう。
以前のQtAssistantでは、表示のためのクラス(QAssistantClient)がありました。
これは、一応、今でも動作すようですが、推奨されていませんので、ここでは、使いません。
ここでは、推奨されているQtProcessを使った起動方法を簡単に記述します。
ここでのサンプルは、以下のファイルから構成されています。
- sample.cpp
-- mainプログラムです。MainWindowの画面を表示しているだけですので詳細な説明を省略します。
- mainwindow.h
-- QMainWindowを継承したMainWindowの画面ヘッダです。詳細な説明を省略します。
- mainwindow.cpp
-- MainWindowの画面のソースです。以降に詳細な説明をします。
使用するQtヘルプファイルは、QtAssistantで使うHELPファイルを作成するで作成した doc.qch,collection_doc.qhcを使います。
[mainwindow.cpp]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #include "mainwindow.h" #define HELP_FILE "collection_doc.qhc" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // create menu. QMenu * pfileMenu = menuBar()-->addMenu(tr("&File")); // create status bar. QStatusBar *pstatus= statusBar(); pstatus-->showMessage(tr("Ready")); // create action. m_help_act = pfileMenu-->addAction("H&elp" ); m_help_act-->setShortcut(QKeySequence(QKeySequence::HelpContents)); m_help_act-->setStatusTip(tr("Show help")); m_help_change_act = pfileMenu-->addAction("Change Page Help" ); m_help_change_act-->setStatusTip(tr("Change Page Help")); m_help_change_act-->setEnabled(false); m_exit_act = pfileMenu-->addAction(tr("E&xit" )); m_exit_act-->setShortcut(tr("Ctrl+Q")); m_exit_act-->setStatusTip(tr("Exit the application")); // create help process. m_process_help = new QProcess(this); m_help_exec=false; // action connect. connect(m_help_act, SIGNAL(triggered()), this, SLOT(OnHelp())); connect(m_help_change_act, SIGNAL(triggered()), this, SLOT(OnHelpChange())); connect(m_exit_act, SIGNAL(triggered()), qApp, SLOT(closeAllWindows())); connect(m_process_help,SIGNAL(started()), this,SLOT(OnStartedHelp())); connect(m_process_help,SIGNAL(finished(int , QProcess::ExitStatus )), this,SLOT(OnEndHelp(int , QProcess::ExitStatus ))); setWindowTitle(tr("SampleWindow")); resize(400, 300); } void MainWindow::OnHelp() { QStringList args; args << QLatin1String("-collectionFile") << ( qApp-->applicationDirPath() + "/" + HELP_FILE ) << QLatin1String("-enableRemoteControl"); m_process_help-->start(QLatin1String("assistant"), args); } void MainWindow::OnHelpChange() { QByteArray ba; ba.append("setSource qthelp://Sample_Help/doc/doc2.html"); ba.append('\0'); m_process_help-->write(ba); } void MainWindow::OnStartedHelp() { m_help_exec=true; statusBar()-->showMessage(tr("Started HELP(Assistant).")); m_help_act-->setEnabled(!m_help_exec); m_help_change_act-->setEnabled(m_help_exec); } void MainWindow::OnEndHelp(int , QProcess::ExitStatus ) { m_help_exec=false; statusBar()-->showMessage(tr("Closed HELP(Assistant).")); m_help_act-->setEnabled(!m_help_exec); m_help_change_act-->setEnabled(m_help_exec); } |
簡単に解説しておきます。
9 - 12行目は、メニュー、ステータスバーを作成しているところです。
15 - 25行目は、アクションを作成しているところです。
- m_help_act:QtAssistantを起動するアクションです。
- m_help_change_act:QtAssistantのページを切り替えるアクションです。
- m_exit_act:アプリケーションを終了するアクションです。
50 - 57行目は、QProcessを使ってQtAssistantを起動しているところです。
詳細なコマンドパラメータについては、http://doc.trolltech.com/4.5/assistant-details.htmlを参照してください。
58 - 64行目は、QProcessを使ってQtAssistantのページを切り替えているところです。
詳細なコマンドパラメータについては、http://doc.trolltech.com/4.5/assistant-custom-help-viewer.htmlを参照してください。
65行目以降は、QtAssistantのプロセスが開始したら、ページ切り替えアクションを有効にしています。
QtAssistantのプロセスが終了したら、ページ切り替えアクションを無効にしています。
簡単ですね。
QProcessへパラメータを渡すときは、起動時は、QString(List)で実施(QtAssictantの起動パラメータをそのまま指定)しますが、 起動後は、プロセス間通信に切り替わりますから、QByteArray(QtAssictantのコマンドパラメータを指定)で引き渡します。
これをコンパイルして実行すると以下のような画面が表示されます。

メニューだけの簡単な画面です。
では、Fileメニューから、Helpをクリックしてみましょう。
以下のようにQtAssistantが表示されると思います。

続けて、Fileメニューから、Change Page Helpをクリックしてみましょう。
以下のようにQtAssistantの表示が切り替わったと思います。

ここでは、詳細な様々なコマンドについて、紹介をしませんでした。
コマンドで、ほとんどの画面操作ができるようです。
色々と試されると良いと思います。
詳細なコマンドパラメータ:http://doc.trolltech.com/4.5/assistant-custom-help-viewer.html
色々と試されると良いと思います。
詳細なコマンドパラメータ:http://doc.trolltech.com/4.5/assistant-custom-help-viewer.html
Qtヘルプファイル(qchファイル,qhcファイル)は、独自のQtアプリケーションの中で、表示させることもできます。
では、続けて、独自のQtアプリケーションでの表示について簡単に解説したいと思います。
ページ: 1 2

