• [soccerwindow2] Qt3版フォーメーションエディタ その3 (akiyama) 20:46:37

移植完了. 後は動作テストを残すのみ.

Qt3版は全部で4666行.wx版が5373行.かなり整理されたようだ. しかし,高々5000行程度の移植で3日もかけてしまったのか. Qtのリファレンスを引くのに時間が取られているとはいえ,僕もまだまだだな. 精進しなければ.

今回の移植作業で,プログラム起動時にメインウインドウ以外にダイアログを同時に表示させたい場合の注意点を把握できた.

Qtでは,通常,以下のようにmain関数を書く.

int main() {
  QApplication app( argc, argv )
  MainWindow win;
  win.show();
  return app.exec()
}

何も考えずに作ると,MainWindowのコンストラクタ内でダイアログのshow関数まで実行してしまう. しかし,そうすると,ダイアログにフォーカスが奪われてしまい,メインウインドウを最小化から復旧できなくなるという不具合が発生する. 詳しい原因は不明だが,ダイアログのshow関数よりもメインウインドウのshow関数を先に呼び出さなければならないようだ. よって,MainWindow::init()のような関数を新たに作って,ダイアログのshow関数をそこで呼び出せば問題は解消される. main関数は以下のようになる.

int main() {
  QApplication app( argc, argv )
  MainWindow win;
  win.show();
  win.init();
  return app.exec()
}

wxGTK版でも同じ問題が発生していたので,X11(もしくはGnome?)共通の問題なのかも知れない.


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-03-14 (月) 14:51:37 (2042d)
SourceForge.JP
Creative Commons License
RoboCup tools by Hidehisa Akiyama is licensed under a Creative Commons 表示-非営利 2.1 日本 License.