Vous n'êtes pas identifié(e).
Qt 4: 4.8.4 - Qt 5: 5.0.2 - Qt Creator: 2.7.1 - Qt Installer: 1.3.0 - VS Qt 4: 1.1.11 - VS Qt 5: 1.2.1 - Monkey Studio: 1.9.0.4
Pages : 1
Bonjour,
J'utilise dans mon appli un Qsqltablemodel et un qtableview et j aimerai que lorsqu'il y a trop de résultat
Naviguer par "page".avez vous une idée de comment procéder?
Merci
Hors ligne
j'ai fait un truc assez proche avec un model en list. C'est assez facile en faite. Dans ton interface tu ajoutes 2 boutons «page suivante» et «page precedente». Ces deux boutons appellent du code dans ton modele.
Dans ton model, tu définies 3 méthodes nouvelles :
-PageNext
-PagePrevious
-getPageCount
en gros, ces fonctions joue avec une variable qui represente la page courante, et le nombre d'élément total / nombre d'élément à afficher.
Tu modifies tes méthodes index et getRowCount.
dans index(), tu déplaces ton index de currentPage*nombreElementParPage et tu récupères ta donnée.
pour le getRowCount tu retournes le nombre d'élément de ta page. En gros tu retournes toujours le nombre max d'élément que tu veux afficher par page sauf la dernier qui a un nombre variable.
Tu émets le signal reset dans les fonctions
-PageNext
-PagePrevious
-getPageCount
pour que la vue se mette à jour,
Tu peux faire le meme traitement dans un proxy model c'est surement plus propre.
Dernière modification par obiwankennedy (21-06-2012 20:08:03)
Hors ligne
salut et merci a toi de ta réponse,
Donc en fait il faut que j'herite de mon QSQLmodel et que je ré-implante index() et rowCount().
Je vais jeté un œil la dessus même s'il ne doit pas être si simple de ré-implanté index()....
Pour le proxymodel il déconseille de l'utilisé dans la doc Qt.
Merci
Hors ligne
Oui tu subclasses le model, tu récupères l'index de ton element tu le modifies par rapport à la page courrant et tu appelles la méthodes index de ta classe parent:
cela fera un truc genre :
Quand je parlais de proxymodel je parlais d'utiliser le principe du proxymodel, pas de la classe QProxyModel.
La classe QProxyModel a été remplacé par celle ci:
http://doc-snapshot.qt-project.org/4.8/ … model.html
L'utilisateur d'un proxy pour son model est une façon élégante de modifier le comportement d'un model.
Dernière modification par obiwankennedy (22-06-2012 15:09:23)
Hors ligne
Ok merci,
Peut tu m'expliquer quelque point de ton code:
dans la fonction createindex le troisieme parametre tu lui envoie index.parent alors que normalement c'est un Qint32???
Et tu renvoi un QSqlModel?
J'ai un peu de mal!:)
Hors ligne
les deux existent :
http://doc.qt.nokia.com/4.7-snapshot/qa … model.html
Je n'ai pas utilisé un model SQL mais un abstract model pour faire mon truc mais rien ne change. Je pense. Tu peux mettre n'importe quoi ce paramètre est important surtout pour les arbres, afin de retrouver les données associées tu peux mettre l'id de ta ligne sql se genre de truc.
Pour te donner un exemple, imagine que tu affiches 4 éléments par page. Tu as 10 éléments à afficher.
Tu peux calculer que la page 0 affichera les éléments à l'index réel : 0, 1 , 2 et 3.
La page 1 affichera : les éléments : 4,5,6 et 7
La page 2 affichera ; les éléments : 8 et 9
Au début de ton application, tu démarres à la page 0. Ton model informe la vue qu'elle doit afficher 4 éléments.
La vue va demander au model, les éléments : 0, 1 , 2 et 3. Tu fais la petite fonction de calcul;
NouvellePosition = 0*4+0
NouvellePosition == 0
NouvellePosition = 0*4+1
NouvellePosition == 1
NouvellePosition = 0*4+2
NouvellePosition == 2
NouvellePosition = 0*4+3
NouvellePosition == 3
Maintenant l'utilisateur change de page pour la deuxième page. Le model informe la vue que toutes les données ont changé (ce qui est le cas du point de vue de la vue).
Le model dit a la vue qu'elle affichera 4 éléments. Donc la vue demande ces éléments : 0, 1 , 2 et 3. Tu fais la petite fonction de calcul;
NouvellePosition = 1*4+0
NouvellePosition == 4
NouvellePosition = 1*4+1
NouvellePosition == 5
NouvellePosition = 1*4+2
NouvellePosition == 6
NouvellePosition = 1*4+3
NouvellePosition == 7
On retrouve les index que j'avais dit.
Maintenant la troisième page: Le model informe la vue que toutes les données ont changé (ce qui est le cas du point de vue de la vue).
Le model dit a la vue qu'elle affichera 2 éléments. Donc la vue demande ces éléments
NouvellePosition = 2*4+0
NouvellePosition == 8
NouvellePosition = 2*4+1
NouvellePosition == 9
L'index décalé avec la bonne valeur peut être demandé au vrai model SQL.
Hors ligne
ok cool merci a toi je vais creuser la question!
Hors ligne
Pages : 1
| Liens interne à QtFR | Les partenaires de QtFR | Liens pour les sites officiels Qt | Liens sur les ressources Qt |
|---|---|---|---|
| Communauté QtFR sur Google+ | Monkey Studio | Télécharger Qt | Notre tutoriel |
| QtFR sur Twitter | ZeGrapher | Site officiel Qt | Documentation Qt |
| IRC box | Qt Blog | Qt Centre | |
| Galeries | Qt Wiki | Qt Apps | |
| Contactez-nous | Qt Quarterly |