Qt Creator のヘルプに「ブラウザで開く」ボタンを追加しました

本日 Add open online documentation button to help viewer というパッチが Qt Creator の master ブランチにマージされました。

Open Online Documentation…

これは、Qt Creator で現在表示中のヘルプをオンライン(ブラウザ)で見るためのボタンで、前々から欲しいと思っていた機能の1つになります。

なぜ欲しいのか?

Qt のサポートの仕事をしていたり、SNS 上で Qt の疑問を発見した際に、大体以下のような手順で調べ物をし回答にたどり着きます。

  1. Qt Creator で Qt のコードを開いて調べる
  2. Qt Creator で Qt のドキュメントを見て調べる
  3. Qt Creator で簡単なサンプルを作って調べる

今回の機能は 2. のケースに関する改善なのですが、この場合、今までは、

  1. Qt Creator で Qt のドキュメントを調べて正解にたどり着く
  2. タイトルや API をコピーし、「qt5 (ペースト)」で Google 検索
  3. 1 と同じものののオンラインドキュメンテーションを開く
  4. URL をコピーしてメールや SNS などで共有する

という手順で行なっていました。

1 -> 3 の手間がめんどくさくて「Qt Creator でボタン押したら自動的に開いてよ!」と思うこと数年…やっと実現することができました。

実装方法

最初は雑に実装したのですが、「HelpPluginPrivate::showHelpUrl で同じようなことをしているから、そこと処理を共通化してくれない?」というレビューを受け、最終的には LocalHelpManager というクラスに以下の処理を追加しました。

オンラインで開くことができる URL かの判別

Qt のヘルプ管理の仕組みである QtHelp では、内部的に qthelp:// という URL の形式を採用しています。この URL を判別し、以下の3つから始まる形式の場合には、オンラインドキュメントへの変換が可能であるとしました。(元々 HelpPluginPrivate::showHelpUrl で実装されていたものを移動しただけです)

  • qthelp://org.qt-project.
  • qthelp://com.nokia.
  • qthelp://com.trolltech.

それ以外の場合(qthelp://com.kdab.gammaray.2100 など)には、この機能は無効化されます。

URL を変換し、オンラインで開く処理

これらの URL を、https://doc.qt.io/ 以下の URL に変換します。

Qt Creator のものは doc.qt.io/qtcreator/~ という URL に、Qt5 のものは doc.qt.io/qt-5/~ という URL に変換します。

ブラウザで開く処理は、QDesktopServices::openUrl() という API で実現しています。

(上記のようなリンクをさっと得るのにこの機能がとても便利なのです!)

終わりに

今回の新機能は、今年の11月末にリリース予定の Qt Creator 4.11 にて利用可能になる予定です。

お楽しみに!

次は…、今開いている Qt のソースコードを code.qt.io の URL で開くような機能があったら嬉しいなぁ。Qt のコードに限らず、例えば git だったらどうこうみたいにできたらいいなと思っています。

おすすめ