ユーザ用ツール

サイト用ツール


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

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
ハイハイスクールアドベンチャー_qt版 [2024/02/06 13:30] – [ビルド] arakiハイハイスクールアドベンチャー_qt版 [2024/02/08 08:44] (現在) – [Qt5/Qt6の互換性] araki
行 123: 行 123:
  
 なお、QMessageBoxを継承した場合は void about()も定義しなおしておかないといけない。 なお、QMessageBoxを継承した場合は void about()も定義しなおしておかないといけない。
 +最後の setMinimunSize()に関しては、StyleSheetでやっている例もあったが、QLabel { min-width: 300 px; min-height: 300 px; }みたいにしてしまうと、textだけでなく、アイコンの方もそのサイズにされてしまうので、アイコン付きの about()では都合が悪いのだ。
  
 <code> <code>
行 140: 行 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版.1707193803.txt.gz · 最終更新: 2024/02/06 13:30 by araki