avancement de l'interface qt
5 participants
Page 1 sur 2
Page 1 sur 2 • 1, 2
avancement de l'interface qt
OH HAÏ
ça commence à prendre forme tout ça, voilà quelques screens.
on commence par créer une table :
après ça demande un nom (etudiants dans ce cas), un nombre de champs (4) , puis ça affiche cette fenêtre (que j'ai déjà remplie) :
on valide, ça crée le fichier etudiants.struct, en utilisant le Ctable.cpp de davy.
ensuite je remplis la table avec le base.cpp by amine, en ligne de commande pour l'instant :
on choisit la table à ouvrir depuis l'interface :
on créée ce qu'on appelle un "QtAbstractItemModel", et on on utilise la fonction affiche() du base.cpp pour tout importer :
la prochaine étape, c'est l'exportation des données (depuis l'interface, vers un fichier .db), en gros pouvoir manipuler les données d'une table (pas la structure) direct depuis l'interface.
et tout ça se fait évidemment en utilisant les fonctions du base.cpp de amine.
je vais mettre les fichiers sur le svn.
cya
ça commence à prendre forme tout ça, voilà quelques screens.
on commence par créer une table :
après ça demande un nom (etudiants dans ce cas), un nombre de champs (4) , puis ça affiche cette fenêtre (que j'ai déjà remplie) :
on valide, ça crée le fichier etudiants.struct, en utilisant le Ctable.cpp de davy.
ensuite je remplis la table avec le base.cpp by amine, en ligne de commande pour l'instant :
on choisit la table à ouvrir depuis l'interface :
on créée ce qu'on appelle un "QtAbstractItemModel", et on on utilise la fonction affiche() du base.cpp pour tout importer :
la prochaine étape, c'est l'exportation des données (depuis l'interface, vers un fichier .db), en gros pouvoir manipuler les données d'une table (pas la structure) direct depuis l'interface.
et tout ça se fait évidemment en utilisant les fonctions du base.cpp de amine.
je vais mettre les fichiers sur le svn.
cya
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
ah ouai ça a bien avancé dis donc
donc c'est parfait. juste un petit detaille a regler niveau parametres dans la methode d'ajout
donc c'est parfait. juste un petit detaille a regler niveau parametres dans la methode d'ajout
Re: avancement de l'interface qt
Super les gars on va être bon la merci bien a amine, nico et davy pour leur boulot...
alain- Messages : 16
Date d'inscription : 13/02/2008
Re: avancement de l'interface qt
ah bah oué, christophe fait tout le gros boulot de la communication entre qt et base.cpp, c'est ultra prise de tete ça
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
sinon j'ai pensé a un truc c'est que les fonctions qui sont en void on les mettra en int, parce que ça peut renvoyer un code erreur, genre 0 si l'operation s'est bien deroulé, 1 si par exemple la clé a effacer n'existe pas etc... Faut etablir une liste d'erreur
Re: avancement de l'interface qt
Bien joué !
Seul gros defaut !
T sous windaube
Seul gros defaut !
T sous windaube
Marc- Admin
- Messages : 33
Date d'inscription : 30/01/2008
Re: avancement de l'interface qt
je sais bien mais ct de l'humour (dsl j'arrive pas a ton niveau encore )amine a écrit: ça marche aussi sous Linux \o/
Marc- Admin
- Messages : 33
Date d'inscription : 30/01/2008
Re: avancement de l'interface qt
et oui, je suis sous "windaube"...qui fait tourner toutes mes grosses applications, tous mes jeux, tous les programmes dont j'ai besoin, sans (trop ) ramer, sans bugger, ni planter.
alors vive Windaube \o/ vive Billou \o/ et vive la France.
alors vive Windaube \o/ vive Billou \o/ et vive la France.
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
gg , désolé pour les , j'ai complêtement zappé de les virer, j'ai corrigé à l'instant.
davy- Messages : 26
Date d'inscription : 31/01/2008
Re: avancement de l'interface qt
une petite maj des derniers jours :
on peut maintenant ajouter les données dans la base directement depuis l'interface, grâce à "Sauver la table" dans le menu
la fonction "retirer une ligne", qui prend en paramètre une clé et vire la ligne correspondante, est aussi implémentée
et j'ai fait un gestionnaire de tables présentes dans ./data...qui fonctionne pas, que j'arrive pas à finir, et que je finirai sans doute pas parce que ça me gave haha
à la place, j'ai juste fait en sorte que la fenetre "Ouvrir une table" (voir le vieux screen), s'ouvre directement dans le dossier data
pas besoin de new screens :p
je mets les fichiers a jour sur le svn
on peut maintenant ajouter les données dans la base directement depuis l'interface, grâce à "Sauver la table" dans le menu
la fonction "retirer une ligne", qui prend en paramètre une clé et vire la ligne correspondante, est aussi implémentée
et j'ai fait un gestionnaire de tables présentes dans ./data...qui fonctionne pas, que j'arrive pas à finir, et que je finirai sans doute pas parce que ça me gave haha
à la place, j'ai juste fait en sorte que la fenetre "Ouvrir une table" (voir le vieux screen), s'ouvre directement dans le dossier data
pas besoin de new screens :p
je mets les fichiers a jour sur le svn
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
et manque aussi la modification des champs.
par exemple quand on fait double clique sur une cellule, on la modifie, et quand on valide, on recupere la clé, le nom de la colonne, et la nouvelle valeur et hop, on appelle la fonction modifChamp(clé, nomCol, newVal)
mais c pas mechant la fonction marche (sauf un petit bug tout mignon, quand on remplace la valeur par une moins longue...)
par exemple quand on fait double clique sur une cellule, on la modifie, et quand on valide, on recupere la clé, le nom de la colonne, et la nouvelle valeur et hop, on appelle la fonction modifChamp(clé, nomCol, newVal)
mais c pas mechant la fonction marche (sauf un petit bug tout mignon, quand on remplace la valeur par une moins longue...)
Re: avancement de l'interface qt
c'est good pour la modification des champs via la gui
en plus, la sauvegarde de la table se fait maintenant automatiquement, à chaque modification d'une case
dès qu'on ajoute une nouvelle clé, on exécute la fonction "ajouter" de la base.
en paramètre, un string * donnees qui contient juste la clé entrée, puis des valeurs nulles pour chaque champs restant.
à ce moment là, la table est sauvegardée, puis à chaque modification des cases de la ligne, j'utilise la fonction modifChamp
sinon pour les petits trucs en plus, la taille de la fenetre est automatiquement redimensionnée, en fonction du nombre de lignes/colonnes.
une fois qu'une clé est entrée, la case n'est plus sélectionnable, car on ne peut pas la modifier (heureusement) avec la fonction modifchamp.
une ligne vide est automatiquement ajoutée (donc plus besoin du menu "Ajouter une ligne") lorsqu'une nouvelle clé est entrée.
si on veut écrire quelque chose dans une ligne qui ne contient pas encore de clé, la valeur saisie est automatiquement effacée de l'interface.
et le "Enlever une ligne" fonctionne aussi
c'est tout pour ce soir, tout est sur le svn
en plus, la sauvegarde de la table se fait maintenant automatiquement, à chaque modification d'une case
dès qu'on ajoute une nouvelle clé, on exécute la fonction "ajouter" de la base.
en paramètre, un string * donnees qui contient juste la clé entrée, puis des valeurs nulles pour chaque champs restant.
à ce moment là, la table est sauvegardée, puis à chaque modification des cases de la ligne, j'utilise la fonction modifChamp
sinon pour les petits trucs en plus, la taille de la fenetre est automatiquement redimensionnée, en fonction du nombre de lignes/colonnes.
une fois qu'une clé est entrée, la case n'est plus sélectionnable, car on ne peut pas la modifier (heureusement) avec la fonction modifchamp.
une ligne vide est automatiquement ajoutée (donc plus besoin du menu "Ajouter une ligne") lorsqu'une nouvelle clé est entrée.
si on veut écrire quelque chose dans une ligne qui ne contient pas encore de clé, la valeur saisie est automatiquement effacée de l'interface.
et le "Enlever une ligne" fonctionne aussi
c'est tout pour ce soir, tout est sur le svn
Dernière édition par nico le Lun 12 Mai - 6:38, édité 1 fois
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
hhhouuuurrraaaaaaa
franchement mec t'assure trop \o/ ça avance a une vitesse, enorme
c'est plus complet que ce que j'imaginais xD
et y a aussi les fonctions de rajouter et enlever une colonne, mais je pense que c tres simple a faire
(si tu as ma derniere version de Base et tout dans ton qt, je travaillerai directement sur celui la, pour eviter le portage a chaque fois )
franchement mec t'assure trop \o/ ça avance a une vitesse, enorme
c'est plus complet que ce que j'imaginais xD
et y a aussi les fonctions de rajouter et enlever une colonne, mais je pense que c tres simple a faire
(si tu as ma derniere version de Base et tout dans ton qt, je travaillerai directement sur celui la, pour eviter le portage a chaque fois )
Re: avancement de l'interface qt
comme tu dis, c'est vraiment tout con à faire tout ça
mais vu que je maitrise pas vraiment tout, parfois je passe des heures à faire une connerie...
genre pour bloquer la sélection d'une case qui contient une clé : j'ai passé plus de deux heures dessus, à chercher quelle fonction de quelle classe fallait utiliser, à quel moment...
au final, c'est une seule ligne à placer au bon endroit. et évidemment une fois que ça marche, on se dit "bah merde, c'était évident"
et sinon le moveCol, ja galère depuis plusieurs jours dessus, impossible de le faire fonctionner :s
ça vire bien la colonne, mais après ça fout un énorme bordel dans les données :
pour le dernier Base, je m'en occupe now.
mais vu que je maitrise pas vraiment tout, parfois je passe des heures à faire une connerie...
genre pour bloquer la sélection d'une case qui contient une clé : j'ai passé plus de deux heures dessus, à chercher quelle fonction de quelle classe fallait utiliser, à quel moment...
au final, c'est une seule ligne à placer au bon endroit. et évidemment une fois que ça marche, on se dit "bah merde, c'était évident"
et sinon le moveCol, ja galère depuis plusieurs jours dessus, impossible de le faire fonctionner :s
ça vire bien la colonne, mais après ça fout un énorme bordel dans les données :
pour le dernier Base, je m'en occupe now.
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
bon bah la nuit a été TRES fructueuse :
tout ça fonctionne \o/
pour le problème du retrait de colonne...j'avais pas fait gaffe qu'il fallait utiliser movColBin......et pas movCol
il y a deux nouvelles classes : addcolwindow pour l'ajout de colonne (basée sur la createwindow), et findwindow pour la recherche.
j'ai fait un gros stresstest sur une base avec 5 colonnes et une trentaine de lignes ( ROCK'N'ROLL) : ajout de colonne, ajout de ligne, retrait de ligne, ajout de colonne, rechercher de données, retrait de colonne, ajout de ligne etc etc etc
tout fonctionne très bien, sauf la recherche de données qui fait planter aléatoirement le programme (erreurs de segmentation)
(amine, j'ai cru un instant que t'avais codé sans aucun bug, ça m'a soulagé ces erreurs)
pour la recherche justement, voilà ce que ça donne :
et les données affichées dans la nouvelle fenetre "recherche", sont directement modifiables. on peut aussi supprimer une ligne directement depuis cette fenêtre.
l'affichage de la fenêtre principale est mis à jour dès qu'on ferme la fenetre de recherche.
allez, au dodo
tcho
tout ça fonctionne \o/
pour le problème du retrait de colonne...j'avais pas fait gaffe qu'il fallait utiliser movColBin......et pas movCol
il y a deux nouvelles classes : addcolwindow pour l'ajout de colonne (basée sur la createwindow), et findwindow pour la recherche.
j'ai fait un gros stresstest sur une base avec 5 colonnes et une trentaine de lignes ( ROCK'N'ROLL) : ajout de colonne, ajout de ligne, retrait de ligne, ajout de colonne, rechercher de données, retrait de colonne, ajout de ligne etc etc etc
tout fonctionne très bien, sauf la recherche de données qui fait planter aléatoirement le programme (erreurs de segmentation)
(amine, j'ai cru un instant que t'avais codé sans aucun bug, ça m'a soulagé ces erreurs)
pour la recherche justement, voilà ce que ça donne :
et les données affichées dans la nouvelle fenetre "recherche", sont directement modifiables. on peut aussi supprimer une ligne directement depuis cette fenêtre.
l'affichage de la fenêtre principale est mis à jour dès qu'on ferme la fenetre de recherche.
allez, au dodo
tcho
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
wah O_o quelqu'un qui code a 5h du matin... faudrait que j'essaye ça un jour xD
bien joué mec, là je vais m'occuper de la fonction recherchen et voir d'ou ça peut venir l'erreur de segmentation ;-)
(c'est pas parce qu'il n'y a aucune données dans le tableau a trouver?)
EDIT:
euh sous nunux il me mets cette erreur apres make
bien joué mec, là je vais m'occuper de la fonction recherchen et voir d'ou ça peut venir l'erreur de segmentation ;-)
(c'est pas parce qu'il n'y a aucune données dans le tableau a trouver?)
EDIT:
euh sous nunux il me mets cette erreur apres make
- Code:
[amine@amine-laptop:~/SVN/FCHGUI]$ make
g++ -o FCHGUI Base.o Cchamps.o createwindow.o Ctable.o fusion.o main.o mainwindow.o moc_createwindow.o moc_mainwindow.o -L/usr/lib -lQtGui -lQtCore -lpthread
mainwindow.o: In function `MainWindow::chDonnee()':
mainwindow.cpp:(.text+0x26ac): undefined reference to `FindWindow::FindWindow(Base*)'
mainwindow.o: In function `MainWindow::ajoutColonne()':
mainwindow.cpp:(.text+0x2f5c): undefined reference to `AddColWindow::AddColWindow(Base*)'
collect2: ld a retourné 1 code d'état d'exécution
make: *** [FCHGUI] Erreur 1
Re: avancement de l'interface qt
g++ -o FCHGUI Base.o Cchamps.o createwindow.o Ctable.o fusion.o main.o mainwindow.o moc_createwindow.o moc_mainwindow.o -L/usr/lib -lQtGui -lQtCore -lpthread
t'as oublié de prendre les classes findwindow et addcolwindow, et les moc qui vont avec.
et le plantage avec la recherche ça se fait que sur certaines recherches...
par exemple, sur le screen plus haut, il y a deux lignes qui contiennent "heh"
avant de prendre le screen, il y en avait 3, j'avais fait une recherche et ça m'avait bien renvoyé les trois lignes contenant "heh"
j'ai viré une des trois lignes, aucun problème, mais depuis dès que je recherche à nouveau "heh", ça plante
faudrait que tu testes directement dpuis l'interface textuelle, je vois pas d'où ça peut venir
t'as oublié de prendre les classes findwindow et addcolwindow, et les moc qui vont avec.
et le plantage avec la recherche ça se fait que sur certaines recherches...
par exemple, sur le screen plus haut, il y a deux lignes qui contiennent "heh"
avant de prendre le screen, il y en avait 3, j'avais fait une recherche et ça m'avait bien renvoyé les trois lignes contenant "heh"
j'ai viré une des trois lignes, aucun problème, mais depuis dès que je recherche à nouveau "heh", ça plante
faudrait que tu testes directement dpuis l'interface textuelle, je vois pas d'où ça peut venir
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
pour l'erreur de segmentation.
avant:
on avait un tableau de string * data de taille nbCh*le nbre de ligne donnée trouvée.
apres:
j'ai mis le tableau data de taille nbCh*le nbre de lignes trouvée+1
la partie du code qui traite ça
EDIT: pour mes classes, maintenant elle sont en .cpp et plus en .cc
avant:
on avait un tableau de string * data de taille nbCh*le nbre de ligne donnée trouvée.
apres:
j'ai mis le tableau data de taille nbCh*le nbre de lignes trouvée+1
ce dernier champs, j'y ai placé un @. et dans l'interface, tu arrete de parcourir le tableau des que tu trouve le @ et comme ça, tu eviteras la pu**** d'erreur de segmentationpourquoi + 1?
la partie du code qui traite ça
- Code:
if(!trouve.empty())
{
string * ligne = new string[trouve.size()+1];
for(int i=0; i
{
ligne[i] = trouve[i];
//cout << ligne[i] << " | ";
if((i+1)%nbCh == 0)
cout << endl;
}
ligne[trouve.size()] = "@";
return ligne;
}
return NULL;
EDIT: pour mes classes, maintenant elle sont en .cpp et plus en .cc
Re: avancement de l'interface qt
testé...et approuvé !
en effet, ça tourne impec maintenant, plus aucun problème !
merci bien
en effet, ça tourne impec maintenant, plus aucun problème !
merci bien
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
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
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
nico- Messages : 52
Date d'inscription : 30/01/2008
Age : 36
Localisation : Montpellier
Re: avancement de l'interface qt
Cool,
sinon j'ai remarquer une erreur, mais ce n'est que côté console. Par exemple je crée une table, je l'apelle aaaaaa, puis je choisit l'option 5 d'amine qui affiche normalement les données et paff erreur de segmentation. Car il tente d'ouvrir un tableau dynamique de taile 0 ^^. A la fin pour compiler tous le programme je ferais un makefile pour compiler le mode console et gui.
PS: bon je piges plus rien l'erreur a disparu. au passage j'ai rêglé quelques 'warnings'. J'avais trouvé un if (nbLine = 3) j'ai corriger et rajouter le = manquant , c'était dans la méthode initSize de la classe Base.
sinon j'ai remarquer une erreur, mais ce n'est que côté console. Par exemple je crée une table, je l'apelle aaaaaa, puis je choisit l'option 5 d'amine qui affiche normalement les données et paff erreur de segmentation. Car il tente d'ouvrir un tableau dynamique de taile 0 ^^. A la fin pour compiler tous le programme je ferais un makefile pour compiler le mode console et gui.
PS: bon je piges plus rien l'erreur a disparu. au passage j'ai rêglé quelques 'warnings'. J'avais trouvé un if (nbLine = 3) j'ai corriger et rajouter le = manquant , c'était dans la méthode initSize de la classe Base.
davy- Messages : 26
Date d'inscription : 31/01/2008
Re: avancement de l'interface qt
ne pas conduire sous l'emprise de l'alcool (et ne pas coder, pareil)
ouai c'est une erreur de ma part, merci davy ^^
ouai c'est une erreur de ma part, merci davy ^^
Page 1 sur 2 • 1, 2
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|