DoxygenでQtヘルプファイルを作成する

Qtベースでライブラリやらアプリケーションやら作成していると、当然ヘルプファイルを作らないと行けないのだが、Qt CreatorにはDoxygen用のコメントブロック補完機能があるので、これを使うとメソッドやらクラス定義にちょっとコメント追加するだけでDoxygenを実行すると結構、クラスの継承関係まで図化した大層なレファレンスマニュアルが出来上がる。

で、そのレファレンスの形式なのだがHTMLくらいしか作った事がなかったのだが
よく見るとQtのヘルプファイル形式(.qch Qt Compressed Help)にできるオプションがあるではないか。

ま〜よく考えてみれば、DoxygenのコメントブロックってQtスタイル受け付けるんだから自然な流れなんだけど。

コンフィグレーションファイルに以下の設定が必要

GENERATE_HTML = YES

GENERATE_QHP = YES

# QHP_NAMESPACE/QHP_VIRTUAL_FOLDERがセットされていればqhelpgeneratorを実行するための追加indexファイルを作成する。GENERATE_HTML = YESは必須

QCH_FILE = <path to your output qch file> # HTML output folderから相対

QHP_NAMESPACE = <your project namespace> # default is org.doxygen.Project
# Qt AssistantかCreatorにヘルプファイル登録したときに表示される

QHP_VIRTUAL_FOLDER = doc

# defaultはdoc特にかえる必要はない。 QtのAPIレファレンスだとqdocになっているらしい

QHG_LOCATION = <QDIR>/bin/qhelpgenerator(.exe)
# qhelpgeneratorのpath これを書いておくとDoxygen実行時にqhelpgeneratorを実行し
.qchの作成までやってくれる。

ここまで設定されて出来上がった.qchファイルをQt AssistantかCreatorのヘルプに登録することで自作モジュールのレファレンスがQtヘルプで見られるからQtベースで開発しているならHTMLでどこかにおいておくよりも勝手が良い。

で、ここまでくるとQtベースで作れば当然Qtのクラスを継承しているものが多い訳で、その継承図をクリックしたら継承元のQtのクラスにリンクされていると直いいんだけどな〜と普通は考えるだろう。

これを実現するには外部のドキュメンテーションからリンクするためのタグファイルが作られている必要があるのだがQtのAPIレファレンスはこのタグファイルが

<QDIR>/doc/html/qt.tags

らしいので

TAGFILES = file1=loc1...という形式で

TAGFILE = <QDIR>/doc/html/qt.tags=../qdoc

と指定すると、自作モジュールのレファレンスからQtのクラスにリンクできる。

 

iPhone4Sを音声通話対応 MVNO Simを入れてみる ---その後

前回、ソフトバンクiPhone4SにSIM下駄を履かせて、Bic SIMの音声通話対応を入れてみたんだけど後一歩のところで残念な結果になり、Bic SIMをfreetelに乗せかえてテザリング兼携帯着信専用機として使うという運用を続けてみたのだが・・・

freetel(FT132A)のバッテリーの持ちは評判通りかなり酷く、テザリングは使う時だけにこまめに切り替えても、会社往復の間に80%以上使い切ってしまうという、非常にバッテリー切れのストレスを伴う状態であった。

こんなストレス伴う運用は結局数週間で挫折してしまい、毎日中古のDocomoiPhone5Sを結局探しまわり、当初通信費節約の一手だったはずが、

数週間でなんとも高額な端末を買う事になってしまった。でもゴールドで32Gの新古なんだよね(^^)やっぱいいよねゴールド・・

SIMも大きくする分にはサイズ変換アダプタが使えるが、小さい方はカッター使うリスクを考えると、素直にnanoSIMに交換をしてもらった。(2000円ちょっとかかる)

なんか、いままでのオーバーヘッド分ってほんとに回収できるのだろうか・・・とちょっと自己嫌悪・・・orz

で、iPhone4SiTunesでバックアップとって5Sに戻して、通信テストしてみたら・・

やっぱり着信だけできないし!っとさすがに焦ってしまい、

バックアップのうち、とりあえず写真とアドレス帳以外は捨てる覚悟で設定の初期化をしてみたところ・・着信成功!めでたしめでたし。

・・・で今にして思えば決定打は設定の初期化だった事を考えればやっぱりソフトバンクのでもできたんじゃないのぉ・・ひょっとして(^^;

nanoSIMにしちゃったから、→micro用のサイズ変換アダプタ買えば検証はできるんだけど、あまりにもいろいろオーバーヘッドかかったので小額とはいえ検証に投資する気が起きなくなってしまった。

これだけ、大枚はたいて5Sになったにもかかわらず、Bic SIMだとテザリングできないとか結構ブーイングなところはあったけど、まあ普段使わないからな・・テザリング

それに気に入ってるし、ゴールド。(・・・って結局そこ?)

---  後日追記 ---

iOS8にアップデートしたらインターネット共有メニューが使えるようになっていて

テザリングが復活した模様。なんでだろ〜

iPhone4Sを音声通話対応 MVNO Simを入れてみる

結論だけ望むなら、完璧ではなかった・・・。

 

かれこれ、ソフトバンクとはブランド名が2回も変わるほど長く使っていたのだが

まあ、経済的事情といいましょうか家族で月15,000も通信料払っているのが

ある日突然ばからしくなってしまい、いろいろ調べてみた。

私個人としてはiPhoneの操作性は気に入っていてあまり手放す気にはなれない。

もともと4を使っていたのだが、パパさんがiPadを入手して4Sを手放すというので

そっちを使う事にした。色は白がよかったんだが・・・黒だった。まあこの際仕方ない。

まあ、大体は・・

月額980円! iphone 4Sをドコモ回線で SIMロック解除、テザリング、メール設定方法を紹介 - NAVER まとめ

これの通りにやれば、できそうだなってことでやってみた。

リンクの条件と違っているのはSimがBic Simの音声通話プランであり、キャリアがソフトバンクであるってことくらいで・・

割とすんなりうまく行き、ちゃんとJP DOCOMOが表示されてデータ通信できるし、低速でもLINE通話もできるし、発信もできるしv(^^)v

めでたし、めでたし!とおもった数日後。

ん、着信できないし・・・orz

なんどやっても、Docomoから不在着信のSMSがiPhoneに届いてしまい、iPhone自身で受けられないではないか!これじゃあポケベルだし(って知らない人もいるんだろうなぁ・・時代の遺物)

Sim変換アダプタの問題かもしれない(kingmobile) GEVEYならできたとかちらほら引っかかってはくるが、とはいえSIM変換アダプタの原理から考えてやっぱり厳しい感じがしないでもなく(要はiPhone側にソフトバンクですよ〜って通信をごまかして入ってくる訳で通話という基本機能ではそこまでごまかしきれないのかなぁと

で、この構想は残念ながら頓挫となった。そうは言っても、MNPしちゃったんだよ!
ってことで、このままSMS機能付き高級ポケベルにしておく訳にも行かないし。

一応、通話はLINEとSMARTalkの2本立てで050の方が使えるとはいえ、非常時の時ってやっぱりさ、IPだけじゃ弱いんだよね。だからつながる携番は確保しておきたい

で、当面はAndroidお試し端末として買ったfreetel(FT132a)にサイズ変換アダプタ(micro->standard)かましてBic SIMを乗せかえた。で、テザリング設定して

iPhone4Sの専用モバイルルータ兼、非常用回線にする。

freetelはバッテリー持ち悪いのに充電ケーブルは専用のものという難はあるが

モバイルルータ専用にしてしまえば会社の往復くらいは持ってくれるんじゃないかなぁ・・・

あ〜早くSIMフリーiPhone5S(この際Cでもいい)安くならないかね〜・・・

 

radikoolを使ってみた

手っ取り早く、結論を望むなら↓

Radikool - radiko録音ツール

 

前にラジオ英会話をPCで録音する で、WIndows用の録音/再生ツールとして

Radikaを使っていたのだが、Radikoのバージョンアップに追随していないのか事情はよくわからないが、再生できなくなってしまっていた。

最近アンテナにつなげないミニコンポを、PCのオーディオミニプラグと
ケーブル接続したら、スピーカがいっちょまえなので音が良くなった。
そうするとPCでラジオ聞くのもいいなあと思うようになる。
ところが・・・Radikaが使えないので普通にChromeRadikoにアクセスすればまあ再生はできるんだけど、ブラウザってなんかの拍子で閉じちゃうじゃない?

で、Radikoolを試したんだけどRadikaより設定も操作性もいい。
インストーラもあるので初心者向き。

こうなってくるとサイマルラジオの専用チューナーがほしいところだなぁ
PCって起動が重たいし・・

Raspberry Piで作れそうじゃない?先々やってみようかなぁ・・

 

VirtualBoxのホスト、ゲスト間でクリップボード共有できない

一般的にはGuest Addtionをインストールしましょう。

設定 > 一般 > 高度 >クリップボード共有を双方向にしましょう

はい共有できました、おしまい。

なのだが・・・。

ファイル共有とか一部の機能は使えるのにクリップボード共有はNG、

ドラッグ&ドロップもNGだけど、まあこっちはやらないから無視

結論からいくと最近のOpenSUSE(ちなみに試したのは13.1)のパッケージにはVirtualBox Guest Additionが含まれていてOSインストール時に入っている。

これを先にソフトウェア管理ツールでvirtualbox-guestまで入れて検索すればプレインストールされているパッケージが3つほどあるはずだから、それらをUnInstallしてからVirtualBoxのデバイスメニューからGuest Additionを新規に入れてやればよい。

会社のPCではなんどやってもうまくいかなくて、自宅PCで試してたらGuest Addtionのインストーラが「違う形式でインストールされた別のバージョンが既に入っているからうまくいかないかもしれない」的なWarningを吐いていて気がついた。

おかし〜な〜こんなWarning最初に出ていたかな・・・?全然記憶にないんだけど

 

--- 後日補足 ---

ディスプレイの解像度とクリップボード共有だけが目的ならOpenSUSEプレインストール版でも問題なく動くので、敢えてGuest Additionを入れ直す必要はない。

確か共有フォルダを使おうとしたら、automountをVirtualBoxの設定の方でやってもうまく動いてくれなかったんで、Guest Addtionのアップグレードが必要になったという、経緯があったのを思い出した。

ちなみに、Guest Additionのインストールの仕方はあちらこちらに親切に解説してくれているので、とくに悩む事はない。カーネルのヘッダを使ってドライバのビルドとかやるから、gcc/make/kernel-develあたりのパッケージを入れておくのを忘れずに。

 

 

機関車トーマスの不思議な世界観2

2っていってるんだから当然1もだいぶ前に書いたんだけど、そもそもこの頃からトップハムハット卿が面白すぎてその事を書きたくてあたためてきたお題だった。

機関車トーマスは数ヶ月前あたりから新クールに突入したらしく、毎週日曜日の朝7:00からEテレで放送されるエピソードは皆初めて見るものばかりなのだが、相変わらず、トーマスを含むレギュラーメンバー、その中でもプライドの高いゴードンは前回エピソードで学んだことをすっかりクリーンナップされて相変わらず、その気質からくる失敗を繰り返している。とは言っても新メンバーのエピソードに時間を割いているためか、主役ですら出番なしとかあったりしてこんな小さな島にどんだけ機関車必要なのさって感じなんだけど。

で、そのソドー鉄道のトップであるハット卿なのですがこの人が・・なんというかよくいえば人間味豊かで、マネジメントとしては俺様でぶっちゃけ「ブラック上司」・・なのですよ。

見栄えとしても肥満は自己管理できていない証の国なら、ちょっと失格レベルのポッチャリさんだし、その役に立つ仕事の中には明らかに公私混同、すなわち私の母を迎えに行けとか、妻と私を送っていけとか、私の納屋が火事だから早く消火しろだのかなりの比率で私最優先なものが多数を占めている。

整備工場のビクターが仕事オーバーフローしたときも、私が頼んだゴードンの修理をごり押ししていたし、機関車の仕事のプライオリティはすべて私最優先なところがすご〜くマネジメントとしてそれどう?って感じ

あと、いつも部下(機関車)のおイタを叱咤する展開で「君のせいで後れと混乱が生じている」って責めるんだけど、プロセスを全く見ないで結果だけで判断するところが気になるんですね。

ヒロがディーゼルの嫌がらせのせいでハット卿に牛乳ぶちまけたときも、トーマスが事実を伝えてなかったら明らかにヒロが謂れのない叱責を受けるところだったわけで、2度も牛乳ぶちまけられたという事実にかなり頭に血が上っていらしてヒロの性格からしたらそんなことありえないんだから、マネジメント的にはなぜ、このようなことが起きたのかを追求するんじゃあないの?って思うんですけどね。ハット卿さん、自分に災難が降り掛かると結構キレやすいんですよね、人間味あふれてるんで(^^;

自分に災難降り掛からないときは、それなりに部下(機関車)に適切な指導しているときもあるんですが・・

あと、乗り物系の操縦があまりお得意ではないらしく、彼に操縦されるレールの上を走行する車(名前忘れた)が結構気苦労が耐えないかわいそうな目にあって笑えます。クリスマスエピソードで本物のそりの操縦ができないからと、そり風に改造されたりとか・・

今クールは結構、ハット卿自身のおイタエピソードもあったりします。まあ、機関車同様、彼も一応は反省するんでそこが人間味あふれていて救いなんですが、

それにしても機関車たちはハット卿のために役に立つ事が至上の喜びのようなのですが、それに値するのに疑問視してしまう俺様っぷりがなんとも不思議なのです。

 

 

 

QWebViewの背景を透過にする

いくつかやり方があるのかもしれないが、基本的には基本クラスのQWidgetの属性とスタイルシートによる背景色指定でできる。

setAttribute(Qt::WA_TranslucentBackground);

setStyleSheet("QWidget { background-color: transparent }");

WA_TranslucentBackground属性にすることで背景をアルファチャネル転送に対応できるようにするらしく、アルファチャネルを含んだ背景を指定する必要がある。

で、background(-color)にtransparentを指定することでそれが実現できるというわけ。

ちなみにbackgroundはスタイルシートの背景指定プロパティの省略形

background-colorやbackground-imageと等価である。

 

--- 後日訂正 ---

QWebViewだけを透過すればいいのなら、スタイルシートで背景をtransparentにすればいい。しかし普通、WidgetというのはMainWindowなりDialogなりのWindowの上に乗っているもので、WindowタイプのWidget(=windowFlagsにQt::Windowが立っている)は基本的にフレームの地色は消せないらしい。

で、このフレームの地色を消す属性がQt::WA_TranslucentBackgroundということになる。

この属性を立てたWindowタイプのWidgetは背景に何を指定してもフレーム全体が透過してしまうので、部分的に背景にアルファマスクを掛けたかったのに全部透過しちゃったよ!ってことになる。

なので、背景を部分的に透過させたいよってときは上に一枚普通のWidgetをスキンとして乗せて背景指定するか、がんばってWindowにPaintイベントで直接描くというのが方法として考えられる。