ChatGPTに聞いてみたところ、modelを切り替えながら処理する場合どうするか、だいぶ複雑にはなる。あまり見慣れないコードだけど、これで動くようになる。(家計簿で、口座間移動処理データを同時に2つ削除するときのslotの部分)
Myu
2025年11月14日金曜日
Qtで、同時に2つのmodelを扱う例
C++の参照、ポインタ復習
Qtで、最近ほとんど使ってなかったポインタや参照をC++で久しぶりに使うことになったが、ほとんど忘れていた。少し復習してみた。
using namespace std;
int func(int& x);
int func2(int* y);
int main(void){
int a=10;
int &b=a; //参照渡し (1)
printf("%d\n",b);
b=11;
int b2=a; //コピー渡し
printf("%d\n",b2);
b2=12;
int *c=&a; //参照
printf("%d\n",*c);
char* e="a";
printf("%s\n",e);
// 関数の引数でも同様
int d=func(a);
printf("%d",d);
int g=func2(&a);
printf("%d",g);
}
int func(int& x){ //参照 渡し ①
return x;
}
int func2(int* y){ // ②
return *y;
}
・&xはxのアドレス *yはyがアドレスのときの値 なので、&と*は逆関数の関係ともいえそう。 *(&x) == x &(*p) == p
2025年11月10日月曜日
Qtでいろいろ作成
家計簿、スケジューラ、日記は、これまで.Net使った自作アプリを使ってきたが、今後Linuxでも使えるようにするため、すべてQtで作り変えることにした。スケジューラと日記はほぼ完成する。日記は、SQlite保存なので、暗号化したテキストで保存することにした。.NETに比べると復号が入っても検索処理も圧倒的に早くなっている。(.NETだと遅すぎて暗号処理を諦めていたけれど、Qtはその点心配はないようだ。)
昨今は、C++に変わり、Rustあたりが速度を要求されるアプリに使われつつあるということだけれど、QtでC++も悪くないように思う。
2025年11月9日日曜日
QtでSqliteつかいたいとき
CMakeList.txtに以下3行追加必要
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Sql)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Sql)
target_link_libraries(QtDiary PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Sql)
git pullのエラー解決 (覚書)
error: Your local changes to the following files would be overwritten by merge: CMakeLists.txt.user Please commit your changes or stash them before you merge. Aborting
この場合、git stash > git pull > git stash pop を試してみる
CMakeLists.txt.user は通常 IDE のユーザー固有設定ファイルなので、プロジェクトによってはバージョン管理に含めないこともあるとか(.gitignore に追加したほうがいい)
<<<<<<< Updated upstream
(リモートの変更)
=======
(自分の stash の変更)
>>>>>>> Stashed changes となっているので、===や<< >>を削除し、どちらかを残す
2025年11月8日土曜日
Qtのandroidへのデプロイ(備忘録)
環境変数 setxで永続保存
setx JAVA_HOME "C:\Program Files\Android\Android Studio\jbr"
setx ANDROID_SDK_ROOT "C:\Users\<ユーザー名>\AppData\Local\Android\Sdk"
setx ANDROID_NDK_ROOT "C:\Users\<ユーザー名>\AppData\Local\Android\Sdk\ndk\29.0.14206865" のように
NDKがないときインストール必要(CMAKEも)
Qtで プロジェクト>キットの管理...>デバイスでAndroidが追加できるが、他の項目をチェックしてまだ不十分なところ(SDKsの赤字のところSdkCommandLineToolなどあれば)をAndroidStudioのSDK Managerで設定していく
・OpenSSLダウンロードなども
スマホ側設定:「設定 → 開発者向けオプション」を有効化→ 「ビルド番号」を7回タップして出ます。「USBデバッグ」をオンにする システムの開発者向けオプションの設定で
がインストールされていること(=adbコマンドが使える)。Qt Creator が SDK/NDK/JDK を認識している。(ツール → オプション → Devices / Android を確認)
adb devices→ device と表示されれば接続成功。
(C:\Users\<ユーザー名>\AppData\Local\Android\Sdk\platform-tools\adb.exeのパスも通しておく必要あり、コントロールパネルあたりから) |
Qt が自動で.apk をビルドスマホへインストール>アプリを起動
QtのWindowsでのデプロイ方法
マルチプラットフォーム言語のため、デプロイ方法は少し手間がかかる。
mingwの形式でビルドした場合
Release ビルドの exe があるディレクトリに移動して、
cd C:\Users\****\kjog\build\Desktop_Qt_6_9_3_MinGW_64_bit-Release
windeployqt.exe のフルパスを指定して実行する必要がある。
"C:\Qt\6.9.3\mingw_64\bin\windeployqt.exe" kjog.exe