QtのLANチャット


オリジナル住所https://blog.csdn.net/tsvico/article/details/94721560

この設計の単純なLANチャットで、グループチャットは、機能的なデザインとささやき2つの部分に分割され、各部分が、基本的なチャットやファイル転送機能をサポートしていますが、メインページに比べささやきページなどウィンクを送るなど、より多くの機能をサポートします窓ジッタ、ボイスチャットなど。デザインやその他の機能のこの部分ささやきグループチャットに基づいて、第5章グループチャットインスタンス内の「本当の洗練されたソリューションのQtとQtのクイックの開発」を参照してください。ここでは、全体的な設計と実装されています。

この文書では、受注開始に応じて書き込まれます

  • ここでの設計は、ホストのIPアドレスは、あなたが複数のローカルLANのIPを検出することができるプロセス見つかりました試運転の前に、同じローカルエリアネットワークに接続されている複数のホストを確保するためにテストするためのプログラムを実行している複数のホストを使用することができ、それはプログラムの先頭で開始する必要があります手動テストリストIPを選択します。
    選択IP

転送ファイル、プライベートチャット、音声は主に、異なるオペレーティングステータスメッセージ(新しいユーザーが参加し、伝送、ファイル転送メッセージ、ファイルを受け入れることを拒否し、ユーザーの葉の保存に使用されるTCP、UDP、UDP、UDPを使用していますプライベートチャット段階に入る)、その後、他のクライアントに送信された各クライアントでリアルタイム放送を確保するために、各クライアントが実行状態の操作に応じて異なるメッセージを受け取ります。新しいユーザーに属するすべてのユーザーが同じインターフェイスで、ステージグループチャットに対応し、グループチャットメッセージを送信することができますされ、プログラムの実行ステージに参加します。UPDメッセージで送信された転送ファイルを受信したときにTCPは、1台のエンドサーバとしてファイルを送信、転送ファイルに使用され、ポイント間の伝送を実現するために、クライアント側の一つとして、ファイルを受け入れます。

ユーザー

新規ユーザーは、我々は、クライアントを追加し、それぞれ、ホストのユーザー名を表示し、他のクライアントと自身のクライアントとのIPアドレスをユーザ名、ホスト名(この列の存在が、人為的に隠されていた)を表示し、メッセージになるの参加についてオンラインxxxのレコードボックスショー、そしていずれかのグループチャット機能(図I)を達成するために、他のクライアントにリアルタイムでメッセージを受信するメッセージを送信します。ときに、クライアントが閉じるか、メッセージボックスレコードボックスが表示さを残すためにこの時点でプログラムを終了し、新しいユーザーが時間を加え、再びオンラインxxxに表示されたとき。(ネイティブLAN IPが172.16.22.48である)、別のクライアントのIP(172.16.22.53)

図I
図II
ここで重要なのは、ブロードキャスト・コンストラクタメインインタフェースにおける伝送路である閉鎖ブロードキャストを送信します

インタフェースはじめに

  • それぞれのメッセージのフォントスタイル、フォントサイズ、太字、斜体、下線、色、テーマを表現し、ファイルを選択します。
  • メッセージボックスを受信すると、ボイスチャット、ビデオ通話(実装されていない)、ファイル転送、リモートデスクトップです。
  • IPスイッチングは、次の図に、左スキンを選択します




  • スクリーンショットインタフェース表示
    ここに画像を挿入説明

    ファイル転送

  • グループチャットインタフェース:
    • チェックされていない場合は、ファイル転送の前に、我々は最初のIPアドレスに送信するように選択し、右側の表示情報からホストを選択し、それはファイルを受信した後、IPを選択し、再選択し、選択していないユーザーにプロンプ​​トが表示されます(あなたはグループチャットを選択することができます自身のIPテスト)、そして、メッセージ入力ボックスにファイル転送ボタンをクリックし送信するためにサーバー・インターフェイス・ファイルを入力します。ファイル送信が送信されて選択し、その後、別の選択されたユーザーは、クライアントのファイル受信画面をポップ受信するかどうかを選択します。
  • ウィスパー
    ウィスパーは、直接インタフェースファイルをクリックし、メインインタフェースと同じ効果

プライベートチャット

  • あなたがチャットや自分自身ことができる場所、テストを容易にするために、ボックス、ダブルクリックの右側からホスト情報を表示します。ときに、ユーザーをダブルクリックすると、そのIPアドレスを取得し、プライベートチャットインターフェース、およびディスプレイ特定のチャットをポップアップ表示します。他の受信されたメッセージがメインページに表示されます「というメッセージがあなたに送信されてささやくXXX。」
    囁き
  • ジッタ送信ウィンドウ
    窓ジッタフラグは、メッセージを送信した後、受信機は、異なる振幅ジッタに上下左右メッセージウィンドウを受信します
QPropertyAnimation *pAnimation = new QPropertyAnimation(this, "pos");
pAnimation->setDuration(500);
pAnimation->setLoopCount(2);
pAnimation->setKeyValueAt(0, QPoint(geometry().x() - 3, geometry().y() - 3));
pAnimation->setKeyValueAt(0.1, QPoint(geometry().x() + 6, geometry().y() + 6));
pAnimation->setKeyValueAt(0.2, QPoint(geometry().x() - 6, geometry().y() + 6));
pAnimation->setKeyValueAt(0.3, QPoint(geometry().x() + 6, geometry().y() - 6));
pAnimation->setKeyValueAt(0.4, QPoint(geometry().x() - 6, geometry().y() - 6));
pAnimation->setKeyValueAt(0.5, QPoint(geometry().x() + 6, geometry().y() + 6));
pAnimation->setKeyValueAt(0.6, QPoint(geometry().x() - 6, geometry().y() + 6));
pAnimation->setKeyValueAt(0.7, QPoint(geometry().x() + 6, geometry().y() - 6));
pAnimation->setKeyValueAt(0.8, QPoint(geometry().x() - 6, geometry().y() - 6));
pAnimation->setKeyValueAt(0.9, QPoint(geometry().x() + 6, geometry().y() + 6));
pAnimation->setKeyValueAt(1, QPoint(geometry().x() - 3, geometry().y() - 3));
pAnimation->start(QAbstractAnimation::DeleteWhenStopped);
  • 音声送信は
    声を聞くことができるだけでなく、音声の送信を受信するために送信するために、メッセージを送信するために音声フラグを作成します。他の音声伝送を閉じながら、閉じた当事者が声をキャンセルした音声放送を送信します。受信機と送信側が閉じている間ことを保証するために、上書きclosingイベント
void autrans::closeEvent(QCloseEvent *e){
    emit meclose(); //发送关闭信号
    QWidget::closeEvent(e);
}
  • 送信ウィンク
    UIインターフェイスにロードされたコードを見ていきますプライベートチャットインターフェイスで新しいテーブルビューを作成します
void priroom::addEmotionItem(int row,int low,int lo)
{
    QLabel* label1 = new QLabel;
    QString path = ":/emoji/%1.gif";
    QMovie *movie =new QMovie(path.arg(lo+1));
    movie->setScaledSize(QSize(25,25));
    label1->setMovie(movie);
    ui->tableWidget->setCellWidget(row,low,label1);
    movie->start();
}

画像のパスを計算するための位置のランクを取得するにはクリックして、ウインクを送信します

その他の詳細

  • サポートリストには、名前を変更しました

概要:基本的にはそんなに、無登録、ログイン機能はありません、またに戻って追加する予定のデータベースの操作のために、私たちはプライベートのために、この本のコードの解釈「本物の洗練されたソリューションのQtとQtのクイック開発」を参照してくださいすることができます我々は、以下のソースのリンクをダウンロードするノートの多くを追加し、qDebugデバッグもこのことについて話すことができます。

ビデオディスプレイ(あなたはクリック再生できない場合は、ここで先に録音すると、チャットボイスませんでしたこちら

トピックスセクションリファレンス

リンクをテストするアプリケーション(.exeファイルをダブルクリックします):
https://www.lanzous.com/i4unced

おすすめ

転載: www.cnblogs.com/tsvico/p/12244473.html