avancement de l'interface qt
5 participants
Page 2 sur 2
Page 2 sur 2 • 1, 2
Re: avancement de l'interface qt
bon pour ce matin ça a été tres rapide,
j'ai porté toute ma partie (ou presque) sur la partie Qt, a partir de maintenant on travaille sur le dossier FCHGUI du svn et plus sur Application.
j'ai mis ma classe lire et ma classe console sur la GUI, et j'ai modifié le main.
quand on fait un make
puis ./FCHGUI ça lance l'interface graphique toute belle et splandide et quand on fait ./FCHGUI -x ça lance l'ignoble mode console (proprement, avec creation d'instance et tout, donc ça marche sous windows aussi normalement)
et dans le dossier Application je le garde parce que je vais essayer de faire un truc qui serait super genial, c'est creation de sockets en mode server pour notre application, et un client pour executer la methode sqlCommandes autrement dit, on va avoir un programme qui marche en reseau aussi (que en mode commandes texte, parce que sinon ça prendra du temps xD)
EDIT: pour le if(nbLine = 3) fallait mettre un == et puis ct pas 3 mais 2 -_-" (je sais pas pourquoi ça marchait xD)
j'ai porté toute ma partie (ou presque) sur la partie Qt, a partir de maintenant on travaille sur le dossier FCHGUI du svn et plus sur Application.
j'ai mis ma classe lire et ma classe console sur la GUI, et j'ai modifié le main.
quand on fait un make
puis ./FCHGUI ça lance l'interface graphique toute belle et splandide et quand on fait ./FCHGUI -x ça lance l'ignoble mode console (proprement, avec creation d'instance et tout, donc ça marche sous windows aussi normalement)
et dans le dossier Application je le garde parce que je vais essayer de faire un truc qui serait super genial, c'est creation de sockets en mode server pour notre application, et un client pour executer la methode sqlCommandes autrement dit, on va avoir un programme qui marche en reseau aussi (que en mode commandes texte, parce que sinon ça prendra du temps xD)
EDIT: pour le if(nbLine = 3) fallait mettre un == et puis ct pas 3 mais 2 -_-" (je sais pas pourquoi ça marchait xD)
Re: avancement de l'interface qt
bonjour les enfants.
je viens pour signaler une erreur de segmentation, je ne sais pas si ça vient de nous (moi et Davy) mais des qu'on rajoute un ligne depuis l'interface graphique, PAF!! erreur de segmentation (ouai ça nous a manqué xD) et je crois que ça vient de là
je sais pas du tout d'ou ça pourrait venir
je viens pour signaler une erreur de segmentation, je ne sais pas si ça vient de nous (moi et Davy) mais des qu'on rajoute un ligne depuis l'interface graphique, PAF!! erreur de segmentation (ouai ça nous a manqué xD) et je crois que ça vient de là
- Code:
void MainWindow::champsModif(QStandardItem * item)
{
QString donnee = baseqt->data(baseqt->index(item->row(), item->column(), QModelIndex()), Qt::DisplayRole).toString();
if ( item->column() == 0) {
saveTable(); update();
if (baseqt->data(baseqt->index(item->row(), item->column(), QModelIndex()), Qt::DisplayRole).toString() == NULL) {
QMessageBox::warning(this, tr("Erreur"),tr("La clé %1 existe déjà !").arg(donnee)); }
}
else if (baseqt->data(baseqt->index(item->row(), 0, QModelIndex()), Qt::DisplayRole).toString() != NULL) {
string cle = baseqt->data(baseqt->index(item->row(), 0, QModelIndex()), Qt::DisplayRole).toString().toStdString(); //Récupère la clé de l'item (colonne 0)
string champs = b->getNomChampsQT(item->column()); //Récupère le champs de l'item
//Récupère le contenu de l'item, et le convertit en StdString
b->modifChamp(cle, champs, donnee.toStdString());
update(); //Fonction modifChamps du noyau base.cpp
}
else { update(); }
}
je sais pas du tout d'ou ça pourrait venir
Re: avancement de l'interface qt
tiens c'est cueirux, ya no problem chez moi
ça le fait à quel moment : sur une table vide ? une table déjà un peu remplie ? quel type de clé ?
ça le fait à quel moment : sur une table vide ? une table déjà un peu remplie ? quel type de clé ?
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
sur une table vide ça le fait tout le temps.
mais sur une table remplie, tu peux ajouter une ligne no probleme, mais quand tu rajoute ensuite une... PAF!!
mais sur une table remplie, tu peux ajouter une ligne no probleme, mais quand tu rajoute ensuite une... PAF!!
Re: avancement de l'interface qt
nico a écrit:depuis toute à l'heure, il y a eu l'ajout de la gestion backup/récupérations des données en cas de bug
maintenant le menu "Sauver la table" sert à faire un nouveau backup
si jamais il y a bug et que les données sont perdues, on click sur "Récupérer la table" et ça charge le dernier backup.
plus tard, quand on quittera la programme, ça demandera si on veut garder les dernières modifications, si oui le backup est mis à jour, et on remplace la table par son backup
sinon, on remplace directement la table par le dernier backup, sans mise à jour.
les booléens sont aussi implémentés
Super ca !
Je penser, dans la meme optique, en optionnelle tu pourrais pas faire un historique des backup, comme ca si jamais on ve revenir 2 fois en arriere et bien ca marche ^^.
Ou meme encore mieu (si jamais ca bouf pas trop) faire des backup automatique à chaque event et du coup mettre un ptit menu deroulant (edit=>undo) ^^
Tout ca c'est de l'optionelle mais bon ca f tellement classe
Marc- Admin
- Messages : 33
Date d'inscription : 30/01/2008
Re: avancement de l'interface qt
ouai mais ça a l'air chaud ça... parce que faut a chaque fois enregister le champs modifié dans un fichier, dire quel est le nom de la colonne, la clé de cette ligne, et l'ancienne valeur)...
mais pour le log de changement j'ai pensé a faire dans le mode reseau, un fichier ou y a toutes les actions effectuées,
je vais essayer de faire un fichier ou y aura tous les changement pour pouvoir revenir en arriere au cas ou...
j'ai bien essayer...
mais pour le log de changement j'ai pensé a faire dans le mode reseau, un fichier ou y a toutes les actions effectuées,
je vais essayer de faire un fichier ou y aura tous les changement pour pouvoir revenir en arriere au cas ou...
j'ai bien essayer...
Re: avancement de l'interface qt
bah rien n'est impossible et puis j'ai fait un reve... et hop amine va le codé le ledemain matin tot
nan ?
nan ?
Marc- Admin
- Messages : 33
Date d'inscription : 30/01/2008
Re: avancement de l'interface qt
(il est con xD)
là c'est le moment d'utiliser la pile de données \o/ (les stack en anglais) c'est pas mal au lieu d'utiliser un fichier etc...)
bon je vais reflachir a comment la faire (pour l'instant j'ai pas fait de reve, mais j'ai eu une idée, je vais la creuser)
là c'est le moment d'utiliser la pile de données \o/ (les stack en anglais) c'est pas mal au lieu d'utiliser un fichier etc...)
bon je vais reflachir a comment la faire (pour l'instant j'ai pas fait de reve, mais j'ai eu une idée, je vais la creuser)
Re: avancement de l'interface qt
les stacks ?
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
oui c'est exactement ça que je vais utiliser pour stocker mes données
Re: avancement de l'interface qt
tu veu du ketchup avec ? :p
Marc- Admin
- Messages : 33
Date d'inscription : 30/01/2008
Re: avancement de l'interface qt
pas besoin de ketchup.
parce que cette fonction je l'ai terminée,
le principe des piles, c'est d'empiler les données les unes sur les autres, (comme les plats quand on fait la vaisselle) le premier qu'on met est le dernier qu'il sort, et là c'est la meme chose, pour chaque changement de données, je mets l'ancienne valeur dans la pile (ça marche que pour les changement de données) et au cas ou on vire une ligne de données, je vide toute la pile. et on peut pas revenir en arriere (pour l'instant) mais deja j'ai testé c'est la fonction defaire() qui comme j'ai dit, chaque changement de données, j'enregistre la clé+";"nomColonne";"AncienneValeur sous forme d'une seule chaine de caractere et on l'empile.
et puis pour revenir en arriere on a juste a re-executer la fonction modifierChamp avec la valeur du premier champ de la pile. puis on vire celle de la de la pile, c'est a dire que si on a fait 1000changements (sans supprimer de lignes) on peut revenir en arriere 1000fois
(tu vois marc? pour ça pas la peine de faire un reve xD)
parce que cette fonction je l'ai terminée,
le principe des piles, c'est d'empiler les données les unes sur les autres, (comme les plats quand on fait la vaisselle) le premier qu'on met est le dernier qu'il sort, et là c'est la meme chose, pour chaque changement de données, je mets l'ancienne valeur dans la pile (ça marche que pour les changement de données) et au cas ou on vire une ligne de données, je vide toute la pile. et on peut pas revenir en arriere (pour l'instant) mais deja j'ai testé c'est la fonction defaire() qui comme j'ai dit, chaque changement de données, j'enregistre la clé+";"nomColonne";"AncienneValeur sous forme d'une seule chaine de caractere et on l'empile.
et puis pour revenir en arriere on a juste a re-executer la fonction modifierChamp avec la valeur du premier champ de la pile. puis on vire celle de la de la pile, c'est a dire que si on a fait 1000changements (sans supprimer de lignes) on peut revenir en arriere 1000fois
(tu vois marc? pour ça pas la peine de faire un reve xD)
Re: avancement de l'interface qt
Super !
ca m'interesse bien ton truc, tu pe balancer ton code ici stp ?
ca m'interesse bien ton truc, tu pe balancer ton code ici stp ?
Marc- Admin
- Messages : 33
Date d'inscription : 30/01/2008
Re: avancement de l'interface qt
quelques petits ajouts :
une fonction verifType qui vérifie si ce qu'on a saisi dans uen case correspond au type de son champ.
grâce à ça, j'ai viré les trois quarts des saveTable() et des update() (des fonctions qui font ramer la gui)
j'ai remanié le fonctionnement du createwindow et du findwindow : contrairement à avant, ça demande directement depuis le mainwindow les différents paramètres (nom d'une table, donnée à rechercher...), puis ensuite on exécute les fonctions create et find, avec comme paramètres ce qu'on nous a demandé avant.
l'intérêt (le seul) est d'éviter d'ouvrir les fenetres quand on click sur "Annuler" au moment de la demande des params (avant, même si on annulait, les new fenêtres étaient ouvertes, il fallait les refermer manuellement, et c'était lourd)
j'ai ajouté aussi le defaire() de amine, mais bon pour l'instant c'est un peu chaud, on va dire que ça plante dans 9 cas sur 10
une fonction verifType qui vérifie si ce qu'on a saisi dans uen case correspond au type de son champ.
grâce à ça, j'ai viré les trois quarts des saveTable() et des update() (des fonctions qui font ramer la gui)
j'ai remanié le fonctionnement du createwindow et du findwindow : contrairement à avant, ça demande directement depuis le mainwindow les différents paramètres (nom d'une table, donnée à rechercher...), puis ensuite on exécute les fonctions create et find, avec comme paramètres ce qu'on nous a demandé avant.
l'intérêt (le seul) est d'éviter d'ouvrir les fenetres quand on click sur "Annuler" au moment de la demande des params (avant, même si on annulait, les new fenêtres étaient ouvertes, il fallait les refermer manuellement, et c'était lourd)
j'ai ajouté aussi le defaire() de amine, mais bon pour l'instant c'est un peu chaud, on va dire que ça plante dans 9 cas sur 10
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
Marc a écrit:Super !
ca m'interesse bien ton truc, tu pe balancer ton code ici stp ?
la partie qui de retourner en arriere est là.
- Code:
void Base::defaire()
{
/*puisque toutes les données sont stockées sous une seule chaine de caractere, il faut separer la clé, le nom du champs et l'ancienne valeur*/
string key, nom, value;
string contenuDeLaPile = pileChangements.top();
int curseur = 0;
for(unsigned int i=0; i
{
if(contenuDeLaPile[i]==';')
curseur++;
else
{
switch(curseur)
{
case 0:
key+=contenuDeLaPile[i];
break;
case 1:
nom+=contenuDeLaPile[i];
break;
case 2:
value+=contenuDeLaPile[i];
break;
default:
break;
}//fin switch
}
}//fin for
modifChamp(key, nom, value);
pileChangements.pop(); // on enleve l'element de la pile
}
et pour remplire la pile quand on change.
et dans le methode modifChamps()
- Code:
string contenu = key+";"+nom+";"+oldValue.str();
pileChangements.push(contenu);
nico: ça plante comment? parce que j'ai remarqué que l'option retourner est grisée des qu'on annule une seule fois... ce que je vais faire c'est de rajouter des testeurs pour voir si les piles (retour arriere et avancer) sont vides, et tu regarde juste ça et tu grise si c'est true. je m'en occupe (pour la base xD)
Re: avancement de l'interface qt
Très bonne idée le coup de la pile pour revenir en arrière
davy- Messages : 26
Date d'inscription : 31/01/2008
Re: avancement de l'interface qt
Re: avancement de l'interface qt
bon j'ai "fini" le truc du annuler/refaire
ça a en effet poser des problèmes avec qt, que j'ai contourné en désactivement les menus quand il faut...je sais c'est pas très beau, mais j'y ai vraiment passé un moment dessus, sans trouver de solution
donc now, on a le droit à un undo, un redo et puis c'est tout (et c'est déjà bien, non mais)
j'ai aussi ajouté ça :
ça s'affiche soit quand on click sur le menu Quitter, soit sur la croix, et seulement quand il y a eu des modifications non enregistrées sur une base...logique
par contre amine, je rencontre quelques problemes après, la fonction backup() fonctionne pas tout le temps apparemment, faudra qu'on voit tout ça demain
j'ai aussi ajouté la description de la classe, pour la doc, pas mal de comments un peu partout, donc à priori à partir de maintenant j'y touche plus au mainwindow.cpp
toute à l'heure je vais mettre les infos détaillées des fonctions dans les .h pour la doc
si vous voulez refaire les menus, ajouter quelques trucs, faut pas hésiter hein, au contraire !
ça a en effet poser des problèmes avec qt, que j'ai contourné en désactivement les menus quand il faut...je sais c'est pas très beau, mais j'y ai vraiment passé un moment dessus, sans trouver de solution
donc now, on a le droit à un undo, un redo et puis c'est tout (et c'est déjà bien, non mais)
j'ai aussi ajouté ça :
ça s'affiche soit quand on click sur le menu Quitter, soit sur la croix, et seulement quand il y a eu des modifications non enregistrées sur une base...logique
par contre amine, je rencontre quelques problemes après, la fonction backup() fonctionne pas tout le temps apparemment, faudra qu'on voit tout ça demain
j'ai aussi ajouté la description de la classe, pour la doc, pas mal de comments un peu partout, donc à priori à partir de maintenant j'y touche plus au mainwindow.cpp
toute à l'heure je vais mettre les infos détaillées des fonctions dans les .h pour la doc
si vous voulez refaire les menus, ajouter quelques trucs, faut pas hésiter hein, au contraire !
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
parfait tout ça.
pour ma fonction backup() je vais la tester en cas extreme pour voir (parce qu'elle fait la sauvegarde automatiquement quand on ouvre une table) et si cette table qu'on ouvre est defectueuse, donc il la sauvegarde, et puis quand on fait restaurer, il restaure cette table crashée, donc la solution, c'est d'enlever le backup automatique.
toutes mes excuses.
pour ma fonction backup() je vais la tester en cas extreme pour voir (parce qu'elle fait la sauvegarde automatiquement quand on ouvre une table) et si cette table qu'on ouvre est defectueuse, donc il la sauvegarde, et puis quand on fait restaurer, il restaure cette table crashée, donc la solution, c'est d'enlever le backup automatique.
toutes mes excuses.
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
Je vous envoie un premier jet de la presentation par mp
a demain,
à tt à l'heure
alain
à tt à l'heure
alain
alain- Messages : 16
Date d'inscription : 13/02/2008
Re: avancement de l'interface qt
ah bah toi aussi tu goutes aux joies de la nuit blanche
en tout cas j'ai pas reçu ton mp, dommage haha (le forum est très instable depuis toute à l'heure, c'est peut-être pour ça)
bon sinon vu que je suis pas du tout sûr d'être là demain à 9h, voilà la partie du dossier création gui
Partie 6
ya 5 pages avec quelques screenshots, donc ça devrait aller
en tout cas j'ai pas reçu ton mp, dommage haha (le forum est très instable depuis toute à l'heure, c'est peut-être pour ça)
bon sinon vu que je suis pas du tout sûr d'être là demain à 9h, voilà la partie du dossier création gui
Partie 6
ya 5 pages avec quelques screenshots, donc ça devrait aller
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
ben je sais pas pk tu l'as pas reçu
j'ai pris ton mail de contact...
j'espere que les autres auront eu le mail
en tout cas si vers 9h30 10h je suis as la vous pouvez me passer un coup de fil pr me réveiller... :p
a+
j'ai pris ton mail de contact...
j'espere que les autres auront eu le mail
en tout cas si vers 9h30 10h je suis as la vous pouvez me passer un coup de fil pr me réveiller... :p
a+
alain- Messages : 16
Date d'inscription : 13/02/2008
Re: avancement de l'interface qt
je viend de voir ce sur ça donne, et faut dire qu'il est bien complet, bravo, mais j'ai remarqué qu'il manquait un mot a la diapo 14, vers la fin.
Re: avancement de l'interface qt
ah bah ouai tu me l'as envoyé sur mon adresse msn, je m'en sers pas comme boite mail
je matterai ça toute à l'heure
je matterai ça toute à l'heure
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Page 2 sur 2 • 1, 2
Page 2 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|