QTcreatorは日記アプリケーションを開発します(初心者のクイックスタートGIFディスプレイ)

前に書く

個人的には感傷的な人で、携帯電話で長く使っているアプリでも依存感があり、そのシンプルさとアートでずっと昔から「Wuji」アプリが私の人生に入ってきました。学習時間のこの期間QTの開発を、それはとみなすことができるのプロセス統合Cを。私がしたい++ロープロファイル「無極」の書き込み勝利によって側を自分自身。プロジェクト全体は、現在開発中ですが、一般的なフレームワークがあります。これで、主な機能が基本的に形成され、いくつかのパーソナライズされた機能が後で追加され、このブログは引き続き更新されます。

開発環境:win10、QTクリエーター、MINGW
開発言語:C ++ 11以上、
基本的な開発知識:オブジェクト指向

プロジェクトgithub:https://github.com/ZYunfeii/QT
環境変数は自分で構成する必要があります

ログインインターフェース

このブロックには現在、3つの組み込みアカウント、1つのテストアカウント(デバッグ用)、および2つのユーザーアカウントがあります。従来のログインインターフェースと言えます。アカウントとパスワードを入力し、クリックしてログインしてください。アカウント登録機能はまだ開発されていません(自分で使っているため)。
ここに画像の説明を挿入
実装方法も非常にシンプルです。2つのQStringListがアカウントのパスワード、ボタン信号スロットのリンクに対応し、ユーザー名のインデックスが取得されます。取得しないと、アカウントがありません。取得すると、 、パスワードが正しいことを確認できます。

メインインターフェース

この部分は、ユーザーが正常にログインした後に入力するインターフェイスです。全体的なペイントスタイルは十分に美しくなく、UIデザイナーはhhhを美化する必要があります。
ここに画像の説明を挿入

この部分は主に、書かれた日記を表示し、日記を削除するためのものです(右側に小さな×があります)。日記には、内容、時間、フォント、当時のフォントサイズなどが含まれています。もちろん、ユーザーのアバターもあります...すべてのデータは、後で紹介するデータベースSQLiteを介して管理および保存されますデータベースを使用する利点は、すべてのデータが次回のログインで利用できることです。また、データベースC ++での操作にも非常に便利です。

新しい日記インターフェース

メインインターフェイスの右上隅にある[新規]ボタンをクリックして、新しい日記を作成します。
ここに画像の説明を挿入
この編集ページは現在、フォントとフォントサイズの調整をサポートしています。今日の幸せや悩みを書き留めたら、右上隅にある[保存]をクリックして記録します。 !!
ここに画像の説明を挿入
書いた日記が自動的に一番上に表示され、フォントサイズは編集したものと同じです。

過去の自分にがっかりした場合は、その時に書き留めたばかげたものを削除してください(右側の赤い×をクリックします)、、データベースもこのレコードを削除しますそして、あなたはもうそれを復元する方法がありません。結局のところ、過去は二度と来ることはなく、時計は決して止まることはありません。

データベースSQLite

QTには独自のデータベースSQLiteが付属しています。データベースを使用するときは、次の文をプロファイルに追加することを忘れないでください。

QT += sql

データベースに複数のテーブルを作成します。

        //创建n个数据库(n = usernameList.length())
        QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE",QString("myDiary%1").arg(i));
        db.setDatabaseName(QString(".//qtDb%1.db").arg(i));
        if( !db.open())  qDebug() << "无法建立数据库连接";       //这个db.open相当关键啊!没这一步后面写数据可失败。
        else qDebug()<<"数据库连接成功";

        QSqlQuery query(db);
        query.exec("create table person (time varchar, diary varchar,family varchar,pointSize varchar)");
        db.close();

忘れないでください:#include <QSqlQuery> #include <QSqlDatabase>
さらに、最初の操作では、db.open()
データベースに時間、日記の内容、フォント、フォントサイズの4つの情報が含まれていることを忘れないでください。これらは、将来増加する可能性があります。

対応するユーザーのデータベースはメインインターフェースにリンクされており、データベースを利用して多くの機能を実行することができます。たとえば、日記の数を数える機能は次のように実現できます。

    //初始化日记数量并显示在顶部
    query.first();
    query.previous();
    if(query.last())
    {
    
    
        numberOfRows =  query.at() + 1;
    }
    ui->diaryNumLabel->setText(QString("您已累计写下了%1篇日记").arg(numberOfRows));

クエリは、取得するデータベースの「ポインタ」です。最初にクエリを最初のデータの前の仮想位置に移動し、次にquery.lastは、クエリが最後の数値を指すまでダウンし、そのインデックスに1を加えたものがデータベースの合計容量になります。
データベースの知識に関するいくつかのブログ投稿を投稿しましょう:
QT-QSqlQueryクラスの操作SQLiteデータベース(作成、クエリ、削除、変更)
Qtデー​​タベースの詳細な説明:(3)QSqlQueryクラスを使用してSQLステートメントを実行します(1)
Qt独自のデータベースQSQLITE (非常に具体的な例)
Qtラーニングロード8-qtを使用してデータベースを操作
する基本的には、読んだ後で始めることができます。質問せずに、試してみてください。

もちろん、データベースにはまだ多くの落とし穴があります。たとえば、日付文字列を使用して削除すると、データベースは文字列を一重引用符と比較します。現時点では、次のようにします。

QString deleteString = QString("%1%2%3").arg("'").arg(time).arg("'");                 
bool flag = query.exec(QString("DELETE FROM person WHERE time = %1").arg(deleteString));

ねえ、ちょっとしたトリック..。

独自のコントロールを組み合わせる

ここに画像の説明を挿入
このようなコントロールは、複数のコントロールで構成されたカプセル化されたコントロールです。特定のメソッドは繰り返されません(操作に昇格されます)。反対のオブジェクトは魂です。

scrollArea和レイアウト

これらの2つのスペースは、メインインターフェイスの本体を構成します。scrollAreaは、テーブルクロスで覆われたウィンドウのようなものです。この文を理解すると、コントロールを理解できます。レイアウトによって、テーブルクロス上のものの配置規則が決まります。ここにブログ投稿があります:
QTの自動スクロール領域のQScrollArea、詳細なグラフィックとテキストの使用方法

継続するプロジェクト

メインインターフェイスの下の白いバーは、将来の拡張用です。言語学習はまだ開発に効果的です。
プロジェクトがgithubにアップロードされましたhttps//github.com/ZYunfeii/QT

11月8日:
ここに画像の説明を挿入

11月9日:
日記記録機能を追加し、日記の詳細をポップアップするためのダブルクリックをサポートし、データベースも接続されています:
ここに画像の説明を挿入

11月16日:
ログインインターフェイスにいくつかの最適化が行われました:デフォルトのログイン名。Enterキーを使用してすばやくログインします。exe実行可能プログラムのアイコンも変更しました。すでに使い始めており、気持ちがいいです。
ここに画像の説明を挿入
11月17日:
マップ関連付けコンテナを使用して、ログインインターフェイスのユーザー名とユーザーパスワードを書き換え、ユーザーに複数のアニメーション効果を追加します。インターフェイス:
ここに画像の説明を挿入

11月22日:
本日突然、ログインインターフェースの機能を思いついたのですが、アカウントとパスワードを正しく入力するとアバターが読み込まれます(qqとは少し異なります)
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43145941/article/details/109559455