2010-06-05 8 views
1

Je vais écrire une application qui utilise QT4 (avec C++ ou python ce n'est pas important à ce moment là). L'une des fonctionnalités est "Afficher tous les éléments dans la base de données".QT4, éléments d'affichage paginés

Un article a un titre, auteur, description et photo (taille constante)

Et il pourrait y avoir de très nombreux articles. Disons 400. Il n'y aura pas assez d'espace pour les montrer tout à la fois. Une rangée aura 200px, donc j'ai besoin d'au plus 4 pour une fois.

Comment les paginer? Je n'ai aucune idée. Je peux utiliser la limite et l'offset dans les requêtes SQL, mais comment dire à la fenêtre: "c'est la 5ème page"?

Des solutions?

Répondre

1

Tout d'abord, vous normalement ne veulent pas utiliser des largeurs de pixels définies manuellement dans toute application graphique, si vous le faites, votre boîte à outils craint (ou vous devez travailler dans le développement de jeux).

Deuxièmement, soyez plus précis.

Vous aurez besoin de définir "page" pour votre application, à savoir ce qu'une page devrait être dans son contexte. Je suppose que c'est briser une liste d'éléments dans des pages séparées. Normalement, ceci est fait en utilisant l'une des classes d'affichage (par exemple QListView ou QTableView) pour prendre en charge une grande partie de la procédure: elle est appelée une barre de défilement (sans parler du concept de dossiers compressés des gestionnaires de fichiers). Une autre méthode consiste à diviser les informations entre plusieurs pages à onglets (QTabWidget), où chaque page affiche une vue quelconque (peut-être QTextView ou l'une des classes de vue M/V ou Item). La même chose peut également être faite en utilisant votre propre pile de widget et un autre widget pour manipuler la page actuellement affichée. C'est essentiellement ainsi que fonctionnent les dialogues d'options du client TeamSpeak 3 et de la plupart des applications KDE; c'est aussi la façon dont les sorciers avec le dos/les boutons suivants travaillent dans le concept. Je vous suggère de jeter un oeil à cette config dialog example

Normalement ce que vous voulez est une vue avec un scrollbar et ou une forme d'effondrement des entrées liées à l'information classées. Si vous voulez juste afficher une liste de pages où chaque page est X entrées: utilisez un tab widget ou stacked widget.

+0

J'ai spécifié 200px pour dire qu'il est impossible d'avoir tous les éléments à la fois. Je vais vérifier le widget onglet et le widget empilé. – matiit

+0

Ok, j'ai lu. Mais je vais devoir créer un nombre dynamique de pages. Il n'y aura pas une page, je vais devoir créer toutes les pages et via qstackedwidget afficher un seul. Est-ce que je le comprends bien? – matiit

+0

Je ne suis pas sûr si je comprends bien votre commentaire lol. Vous pouvez ajouter/supprimer dynamiquement n'importe quel nombre de pages à un QStackedWidget, jusqu'à épuisement de la mémoire. Si vous avez une idée du nombre de pages dont vous aurez besoin à l'avance, vous pouvez pré-allouer les pages du widget empilé avant de les remplir avec les données. (Par exemple, nombre d'entrées/nbre de pages = nombre de pages à construire). Vous n'avez pas beaucoup parlé des caractéristiques des applications, donc je ne peux pas être très précis. – TerryP