ユーザ用ツール

サイト用ツール


ハイハイスクールアドベンチャー_qt版

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
ハイハイスクールアドベンチャー_qt版 [2024/02/06 13:28] – [ダイアログについて] arakiハイハイスクールアドベンチャー_qt版 [2024/02/08 08:44] (現在) – [Qt5/Qt6の互換性] araki
行 39: 行 39:
 ソースはM5版同様[[https://github.com/wildtree/qhhsadv.git|GitHub]]から取得可能である。 ソースはM5版同様[[https://github.com/wildtree/qhhsadv.git|GitHub]]から取得可能である。
 [[https://www.wildtree.jp/~araki/HHSAdv_data.zip|データファイル]]は ~/.HHSAdv の下に展開する。 [[https://www.wildtree.jp/~araki/HHSAdv_data.zip|データファイル]]は ~/.HHSAdv の下に展開する。
 +
 +GitHubからは git clone で取得する。
 +<code>
 +$ git clone https://github.com/wildtree/qhhsadv.git
 +</code>
  
 QtCreatorを使用する場合には、CMakeLists.txt がプロジェクトファイルになる。 QtCreatorを使用する場合には、CMakeLists.txt がプロジェクトファイルになる。
行 118: 行 123:
  
 なお、QMessageBoxを継承した場合は void about()も定義しなおしておかないといけない。 なお、QMessageBoxを継承した場合は void about()も定義しなおしておかないといけない。
 +最後の setMinimunSize()に関しては、StyleSheetでやっている例もあったが、QLabel { min-width: 300 px; min-height: 300 px; }みたいにしてしまうと、textだけでなく、アイコンの方もそのサイズにされてしまうので、アイコン付きの about()では都合が悪いのだ。
  
 <code> <code>
行 135: 行 141:
 Qt::WA_DeleteOnClose をセットしておくことで、ダイアログを閉じたら勝手に削除してくれるので staticな関数なのに、オブジェクトを返さずにすむ。 Qt::WA_DeleteOnClose をセットしておくことで、ダイアログを閉じたら勝手に削除してくれるので staticな関数なのに、オブジェクトを返さずにすむ。
 お手軽だが、こんなの、Qtのソースみないとわからない。 お手軽だが、こんなの、Qtのソースみないとわからない。
 +
 +==== Qt5/Qt6の互換性 ====
 +
 +主に[[uConsole]]でコード書いていた関係で、Qt5を使って開発したため、Qt6で動くかどうかとか全然ちゃんと調べてなかった。
 +[[DevTerm]]の方は逆にQt6をインストールしてあったので、そっちでビルドできるかトライしたらあっさりこけた。
 +
 +ただし、こけたのは QMediaPlayer 周り。
 +
 +音鳴らす機能はおまけなのでなくてもいい。
 +
 +とりあえず、動作チェックのために、Qt6 なら飛ばすようにした。
 +
 +<code>
 +#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
 +        _mp.setMedia(QUrl::fromLocalFile(files()->mp3_file(sound_names[n]).c_str()));
 +        _mp.setVolume(100);
 +        _mp.play();
 +#endif
 +</code>
 +
 +ざっくり、Qt6.0.0より前のバージョンの時だけコンパイルされるようにした。
 +
 +でも待って。Qt6のリファレンスにサンプルコードあるじゃん。
 +ってことで、速攻で Qt6用のコードも追加した。
 +音もちゃんと鳴った。
 +
 +<code>
 +#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
 +        _mp.setMedia(QUrl::fromLocalFile(files()->mp3_file(sound_names[n]).c_str()));
 +        _mp.setVolume(100);
 +        _mp.play();
 +#else
 +        _mp.setAudioOutput(&_audio);
 +        _mp.setSource(QUrl::fromLocalFile(files()->mp3_file(sound_names[n]).c_str()));
 +        _audio.setVolume(100);
 +        _mp.play();
 +#endif
 +</code> 
 +
 +ボリュームの制御が QAudioOutput に移されてて、あとは setMedia()が setSource()になっただけ。
 +とはいえ、違いは違い。
  
ハイハイスクールアドベンチャー_qt版.1707193696.txt.gz · 最終更新: 2024/02/06 13:28 by araki