2010-09-12 8 views
3

Je suis en train de faire une interface utilisateur qui contient une liste de ces articles:
http://img707.imageshack.us/img707/1114/16900293.png
http://img707.imageshack.us/img707/1114/16900293.png
http://img707.imageshack.us/img707/1114/16900293.pngQt: Conseils sur l'interface utilisateur dynamique

L'utilisateur peut modifier le nombre des éléments, de sorte que l'interface utilisateur est dynamique. Quels sont les meilleurs composants pour obtenir l'entrée de l'utilisateur, comme dans l'image? Est-il multiple s et QLineEdit s?
Quelle est la meilleure façon de les gérer?

Répondre

1

Si vous avez un grand nombre de widgets très similaires (comme ça), je recommanderais d'explorer l'une des vues du modèle, ou de créer un widget personnalisé, et de laisser ces widgets gérer eux-mêmes l'édition. Ensuite, votre widget principal peut simplement faire une liste de widgets personnalisés dans une zone défilée, et ne pas se soucier de garder une trace de chaque valeur.

3

J'ai fait quelque chose de similaire avec plusieurs conteneurs QQueue remplis d'éléments QLabel et QLineEdit. Juste ajouter et supprimer des éléments lorsque l'utilisateur désire plus ou moins. Pourrait combiner cela avec un QGridLayout et mettre les choses où vous avez besoin. Je ne sais pas si c'est la meilleure façon, mais ça marche bien pour moi.

http://doc.trolltech.com/4.4/qqueue.html

QQueue<QLineEdit *> linedit; 
QGridLayout *gridboxLayout; 
gridboxLayout= new QGridLayout(); 

linedit.enqueue(new QLineEdit()); 
gridboxLayout->addWidget(linedit.last(),row,column); 
this->setLayout(gridboxLayout); 

Tu vas besoin d'ajouter des trucs pour garder la trace des lignes, des colonnes et des éléments et tel, mais qui est la configuration de base. Continuez à ajouter de nouveaux éléments à la QQueue et insérez-les dans une nouvelle ligne de la grille. Vous pouvez même les référencer par ligne et les supprimer plus tard.

L'autre moyen facile de faire cela, qui fonctionnera avec le concepteur, si vous avez un nombre maximum raisonnable d'éléments, est de simplement construire le tout et cacher les widgets que vous ne voulez pas voir jusqu'à ce que vous avez besoin leur.

+2

QQueue ^.^Du plaisir à dire. – mpen

4

Si l'interface utilisateur contient un grand nombre de ces éléments, vous pouvez envisager d'utiliser QTableView (ou QTableWidget). Vous pourriez présenter les parties statiques "x =", "(2n" et "t)" dans des colonnes statiques ou vous pourriez créer un délégué qui dessinerait les parties statiques avec des couleurs différentes. L'avantage d'utiliser QTableView au lieu de QLineEdits est que le déplacement avec le clavier est facile. En utilisant les touches du curseur, vous pouvez facilement déplacer la mise au point. L'expérience d'édition est la même que dans les tableurs comme Excel.

+0

Ce n'est pas vraiment ce que je veux, mais je vais l'utiliser comme une solution "d'urgence". Merci. –