« C3000落下&入院準備中 | トップページ | C3100に導入したもの »

2006年12月 2日 (土)

QDialog にメニューをつける方法

ちょっとはまったので、記録。

QDialogを継承した自作スケジューラの予定編集ダイアログ。これをビュースタイルで使用するときはキーボードのショートカットが使えないので、ツールボタンをつけようとしたのがそもそもの始まり。

1.QToolBarをつけよう。
   ・・・QMainWindowを継承していないからつけられない。

2.じゃあ、QDialog の代わりにQMainWindowを継承してみよう。
   ・・・呼び出す際にexec() が使えないので、呼び出した後も呼び出し元の処理が進行してしまう。編集終了時にシグナルをとばし、呼び出し元の変数を変えてチェックするようにしてみたが、うまくいかない。

3.標準装備のメモ帳が編集画面でもツールボタンを表示していることを思い出して、QTopiaのソースを見る。
   ・・・ざっと見ただけだけど、QDialog は使わずに、QMainWindow 内部でWidgetStackに積んだ画面を切り替える、という方法のよう。

4.ツールボタンはあきらめてQDialog に QMenuBar を追加して、メニューをつけることにする。
   ・・・メニューバーの存在がQVBoxLayoutに伝わらないようで、本来の画面の一部がメニューバーの下に入り込んでしまう。

5.QVBoxLayout の位置をずらす方法を考えて、しばらくはまる。
   ・・・QVBoxLayout の位置をずらすんじゃなくて、QVBoxLayoutの先頭に、メニューバーのサイズの分だけ空白を追加すればいいことに気がつく。

6.addSpacing() で空白部分を追加して、完了。

うーん、書いてみると、実にしょうもない展開・・・。

|

« C3000落下&入院準備中 | トップページ | C3100に導入したもの »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/139339/12901844

この記事へのトラックバック一覧です: QDialog にメニューをつける方法:

« C3000落下&入院準備中 | トップページ | C3100に導入したもの »