前に書く
個人的には感傷的な人で、携帯電話で長く使っているアプリでも依存感があり、そのシンプルさとアートでずっと昔から「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とは少し異なります)