Cours-Gratuit
  • Accueil
  • Blog
  • Cours informatique
home icon Cours gratuits » Cours informatique » Cours programmation » Cours langage C » Applications langage c

Application en langage C réalisation d’un mini chat

Application en langage C réalisation d’un mini chat
Participez au vote ☆☆☆☆☆★★★★★
Page suivante pour Télécharger

Application en langage C réalisation d’un mini chat

Cet article propose en détaille une application en langage C réalisation d’un mini chat, Programmer par C++, bibliothèque Qt architecture client/serveur.

Les sockets sont échangés entre les clients et le serveur par le protocole réseau Tcp.

Cette application présente un exemple pour les programmeurs qui débutent dans Qt et qui veulent comprendre le fonctionnement des applications Client/Serveur.

Vous pourrez télécharger le fichier au format zip il contient le code sources complet.

Extrait du code source :

** Meta object code from reading C++ file 'dialog.h'

**

** Created: Thu May 13 06:04:53 2010

**     by: The Qt Meta Object Compiler version 62 (Qt 4.6.2)

**

** WARNING! All changes made in this file will be lost!

#include "dialog.h"

#if !defined(Q_MOC_OUTPUT_REVISION)

#error "The header file 'dialog.h' doesn't include <QObject>."

#elif Q_MOC_OUTPUT_REVISION != 62

#error "This file was generated using the moc from 4.6.2. It"

#error "cannot be used with the include files from this version of Qt."

#error "(The moc has changed too much.)"

#endif

QT_BEGIN_MOC_NAMESPACE

static const uint qt_meta_data_Dialog[] = {

// content:

       4,       // revision

       0,       // classname

       0,   0, // classinfo

       2,   14, // methods

       0,   0, // properties

       0,   0, // enums/sets

       0,   0, // constructors

       0,       // flags

       0,       // signalCount

// slots: signature, parameters, type, tag, flags

       8,   7,   7,   7, 0x08,

     49,   7,   7,   7, 0x08,

       0       // eod

};

static const char qt_meta_stringdata_Dialog[] = {

   "Dialog\0\0on_comboBox_currentIndexChanged(QString)\0"

   "on_buttonBox_accepted()\0"

};

const QMetaObject Dialog::staticMetaObject = {

   { &QDialog::staticMetaObject, qt_meta_stringdata_Dialog,

     qt_meta_data_Dialog, 0 }

};

#ifdef Q_NO_DATA_RELOCATION

const QMetaObject &Dialog::getStaticMetaObject() { return staticMetaObject; }

#endif //Q_NO_DATA_RELOCATION

const QMetaObject *Dialog::metaObject() const

{

   return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;

}

void *Dialog::qt_metacast(const char *_clname)

{

   if (!_clname) return 0;

   if (!strcmp(_clname, qt_meta_stringdata_Dialog))

       return static_cast<void*>(const_cast< Dialog*>(this));

   return QDialog::qt_metacast(_clname);

}

int Dialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a)

{

   _id = QDialog::qt_metacall(_c, _id, _a);

   if (_id < 0)

       return _id;

   if (_c == QMetaObject::InvokeMetaMethod) {

       switch (_id) {

       case 0: on_comboBox_currentIndexChanged((*reinterpret_cast< QString(*)>(_a[1]))); break;

       case 1: on_buttonBox_accepted(); break;

       default: ;

       }

       _id -= 2;

   }

   return _id;

}

QT_END_MOC_NAMESPACE

... ... ... ...

#include "mainwindow.h"
#include "ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{

    ui->setupUi(this);
    db = QSqlDatabase::addDatabase( "QSQLITE" );
    db.setDatabaseName("biblio.sqlite" );
    if( !db.open() )
    QMessageBox::information(0, tr("Button"),tr("Failed to open database"));
    QStringList choixVuePretSL;
    choixVuePretSL << "Prêt en cours" << "Tous les prêts";
    ui->comboBox->addItems(choixVuePretSL);
    init();
    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
    ui->tableWidget_2->setSelectionBehavior(QAbstractItemView::SelectRows);
    connect(ui->tableWidget,SIGNAL(itemClicked ( QTableWidgetItem *)),SLOT(menu_ctx_h(QTableWidgetItem *)));

    connect(ui->tableWidget_2,SIGNAL(itemClicked ( QTableWidgetItem *)),SLOT(menu_prets(QTableWidgetItem *)));

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void MainWindow::on_pushButton_4_clicked()
{
    ui->tabWidget->setCurrentIndex(1);
}

void MainWindow::on_pushButton_3_clicked()
{
    ui->tabWidget->setCurrentIndex(0);
}

void MainWindow::on_tabWidget_currentChanged(int index)
{
    ui->lineEdit_10->clear();

    ui->tableWidget->clear();

    init();
}

void MainWindow::on_pushButton_clicked()
{

    if ((ui->lineEdit->text()!="")&&(ui->lineEdit_2->text()!=""))
    {
    db = QSqlDatabase::addDatabase( "QSQLITE" );

       db.setDatabaseName("biblio.sqlite" );
       if( !db.open() )
       QMessageBox::information(0, tr("Button"),tr("Failed to open database"));

       QSqlQuery qry;

       QString sql="INSERT INTO livres (nom,auteur) VALUES (?,?)";


       //INSERT INTO table_name (column1, column2, column3,...)
       //VALUES (value1, value2, value3,...)
       qry.prepare(sql);
       qry.addBindValue(ui->lineEdit->text());
       qry.addBindValue(ui->lineEdit_2->text());


       //QString val="val:"+dat+"/"+nom;

       if( !qry.exec() )    QMessageBox::information(0, tr("Button"),tr("Failed to insert"));
       {

          QMessageBox::information(0, tr("Button"),tr("Nouvelle entrée dans la base de données"));


          ui->lineEdit->setText("");
          ui->lineEdit_2->setText("");
      }


       //else QMessageBox::information(0, tr("Button"),val);
       //db.close();
     }

}

void MainWindow::init(void)  {

   // menucontext * mc1=new menucontext();

   // ui->tableWidget->setHorizontalHeader(mc1) ;

   /*
 this->connect( mc1, SIGNAL( signal_menu_ctx( int, const QPoint &) ),
               SLOT( menu_ctx_h( int, const QPoint & ) ) ) ;
  */


    //itemClicked (mc1, QTableWidgetItem * item )

    QStringList labelH;
    labelH << "Id" << "Nom du livre" << "Auteur"  << "Disponible";
    ui->tableWidget->setColumnWidth(0,30);
    ui->tableWidget->setColumnWidth(1,280);
    ui->tableWidget->setColumnWidth(2,200);
    ui->tableWidget->setColumnWidth(3,80);


    ui->tableWidget->setHorizontalHeaderLabels(labelH);

   int row=0;
/*
    db = QSqlDatabase::addDatabase( "QSQLITE" );

         db.setDatabaseName("biblio.sqlite" );
         if( !db.open() )
         QMessageBox::information(0, tr("Button"),tr("Failed to open database"));
*/
         QSqlQuery qry;

         QString sql="SELECT id,nom,auteur,dispo FROM livres";

         qry.prepare(sql);

         QString nom;
         QStringList nomSL,auteurSL,idSL,dispoSL;

         if( !qry.exec() )    QMessageBox::information(0, tr("Button"),tr("Failed to select"));

         else {


         while( qry.next() )
             {


             idSL << qry.value(0).toString();
             nomSL << qry.value(1).toString();
             auteurSL << qry.value(2).toString();
             
             if (qry.value(3).toString()=="")
                 dispoSL << "Oui";
             else dispoSL << qry.value(3).toString();
             
             row++;
         }

         ui->tableWidget->setRowCount(row);


         for(int i=0;i<row;i++)
         {

         QTableWidgetItem *idTWI=new QTableWidgetItem(idSL.at(i));

         ui->tableWidget->setItem(i,0,idTWI);

         QTableWidgetItem *nomTWI=new QTableWidgetItem(nomSL.at(i));

         ui->tableWidget->setItem(i,1,nomTWI);

         QTableWidgetItem *auteurTWI=new QTableWidgetItem(auteurSL.at(i));

         ui->tableWidget->setItem(i,2,auteurTWI);


         QTableWidgetItem *dispoTWI=new QTableWidgetItem(dispoSL.at(i));

         ui->tableWidget->setItem(i,3,dispoTWI);

             }
     }

         init_pretsEnCours();

}

// a mettre à jour

void MainWindow::on_pushButton_5_clicked()
{


/*

    db = QSqlDatabase::addDatabase( "QSQLITE" );

         db.setDatabaseName("biblio.sqlite" );
         if( !db.open() )
         QMessageBox::information(0, tr("Button"),tr("Failed to open database"));
*/
    QStringList labelH;
    labelH << "Id" << "Nom du livre" << "Auteur"  << "Disponible";
    ui->tableWidget->setColumnWidth(0,30);
    ui->tableWidget->setColumnWidth(1,280);
    ui->tableWidget->setColumnWidth(2,200);
    ui->tableWidget->setColumnWidth(3,80);


    ui->tableWidget->setHorizontalHeaderLabels(labelH);

   int row=0;

         QSqlQuery qry;

         QString sql="SELECT id,nom,auteur,dispo FROM livres WHERE nom LIKE ?";

         qry.prepare(sql);
         qry.addBindValue(ui->lineEdit_10->text()+"%");

         QString nom;
         QStringList nomSL,auteurSL,idSL,dispoSL;

         if( !qry.exec() )    QMessageBox::information(0, tr("Button"),tr("Failed to select"));

         else {


         while( qry.next() )
             {


             idSL << qry.value(0).toString();
             nomSL << qry.value(1).toString();
             auteurSL << qry.value(2).toString();

             if (qry.value(3).toString()=="")
                 dispoSL << "Oui";
             else dispoSL << qry.value(3).toString();

             row++;
         }

         ui->tableWidget->setRowCount(row);


         for(int i=0;i<row;i++)
         {

         QTableWidgetItem *idTWI=new QTableWidgetItem(idSL.at(i));

         ui->tableWidget->setItem(i,0,idTWI);

         QTableWidgetItem *nomTWI=new QTableWidgetItem(nomSL.at(i));

         ui->tableWidget->setItem(i,1,nomTWI);

         QTableWidgetItem *auteurTWI=new QTableWidgetItem(auteurSL.at(i));

         ui->tableWidget->setItem(i,2,auteurTWI);


         QTableWidgetItem *dispoTWI=new QTableWidgetItem(dispoSL.at(i));

         ui->tableWidget->setItem(i,3,dispoTWI);

             }
     }

}

Decouvrir ces documents

  • Projet en JAVA application chat avec socket

    Projet en JAVA application chat avec socket

  • Application client serveur de chat avec JAVA

    Application client serveur de chat avec JAVA

  • Mini projet de programmation en langage C

    Mini projet de programmation en langage C

  • Application Excel calculateur les dosages de la réalisation des recettes

    Application Excel calculateur les dosages de la réalisation des recettes

  • Code source mini projet de compilateur basic en langage C

    Code source mini projet de compilateur basic en langage C

  • Mini projet calculatrice avec JAVA

    Mini projet calculatrice avec JAVA

  • Mini projet en langage C pour calculateur de points de championnat en tennis

    Mini projet en langage C pour calculateur de points de championnat en tennis

  • Support de cours Algorithme les Boucles

    Support de cours Algorithme les Boucles

Articles connexes

  • Exercice Visual Basic : Mini application de gestion de petit commerce
  • Exercice piles d'entiers - structures de données abstraites
  • Application Python : gestion des comptes
  • Comment trouver le service client d’une marque en France?
  • Application web : le guide pour comprendre de quoi cela retourne
  • QCM architecture des ordinateurs
  • Exercice création des requêtes SQL
  • Installer, configurer et utiliser l’application Outlook (OWA) sur Android et IOS 
  • Contactez-nous
  • A propos de nous
  • On recrute
  • Rechercher dans le site
  • Politique de confidentialité
  • Droit d'auteur/Copyright
  • Conditions générales d'utilisation
  • Plan du site
  • Accueil
  • Blog
  • Finance et compta.
  • Formations Pro.
  • Logiciels & Apps
  • Organisation
  • Cours informatique
  • Aide à la rédaction
  • Etudes et Metiers
  • Science et Tech
  • Titans de la Tech
id 11354 02