IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

QListView et modèle personnalisé


Sujet :

Qt

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 37
    Points : 19
    Points
    19
    Par défaut QListView et modèle personnalisé
    Bonjour a tous et a toutes.

    J'ai pour but de creer une listview de strings. J'ai donc cree une classe
    StringListModel heritant de QAbstractListModel comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    class StringListModel : public QAbstractListModel
    {
        Q_OBJECT
     
    public:
        explicit StringListModel(QObject *parent = 0);
        int					rowCount(const QModelIndex&) const;
        QVariant				data(QModelIndex const &, int) const;
        Qt::ItemFlags			flags(QModelIndex const &) const;
     
    private:
        QStringList                      string_list;
     
    };
    Tout marche tres bien, lorsque je cree ma liste dans ma mainwindow, la liste est bien chargee, et les elements sont bien presents dans ma listview.
    Mais j'aimerai y ajouter des effets de styles. Comme par exemple, garder un contour sur la selection, ou alors mettre en rouge juste la ligne selectionnee.
    aucun moyen d'y parvenir.

    Voici le .cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    StringListModel::StringListModel(QObject *parent) : QAbstractListModel(parent)
    {
        this->string_list.push_back("test");
        this->string_list.push_back("test2");
    }
     
    int                 StringListModel::rowCount(const QModelIndex& index) const
    {
        return (this->string_list.size());
    }
     
    QVariant			StringListModel::data(QModelIndex const &index, int role) const
    {
        if (Qt::DisplayRole == role)
            return (QVariant(this->string_list[index.row()]));
        return (QVariant());
    }
     
    Qt::ItemFlags		StringListModel::flags(QModelIndex const &) const
    {
        return (Qt::NoItemFlags);
    }
    Et voici ma window principale ou se charge la liste et ou je set le model

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Window::Window(QWidget *parent) : QWidget(parent)
    {
        this->setFixedSize(400, 550);
     
        this->vue_ = new QListView(this);
        this->vue_->setGeometry(10, 10, 355, 325);
     
        this->model_ = new StringListModel(this);
     
        this->vue_->setModel(this->model_);
        this->vue_->show();
    }
    Ma question est donc, que dois-je faire pour que je puisse totalement personnalisee les elements de ma liste

    par exemple :
    - mettre en noir toutes les strings de la listes.
    - mettre en rouge la string qui est selectionnee par l'utilisateur
    - ou alors rajouter une belle bordure sur la string selectionnee.

    Merci d'avances pour vos reponses.

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonjour,

    Avez-vous exploré la piste des "Item roles" ?



    Avec la fonction setData() des modèles, un rendu devrait pouvoir se faire.

    Bonne continuation,
    Amnell.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 37
    Points : 19
    Points
    19
    Par défaut
    Je dois donc reimplementer la fonction setData et recupere le QAbstractItem lorsque l'utilisateur selectionne un element de la liste ?

    En fait je suis un peu perdu, Je trouve que sur cette partie la doc est bien expliquee mais elle manque d'exemples concrets ..

  4. #4
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    J'avoue que j'ai quelque peu oublié comme cela fonctionnait. Quoi qu'il en soit, ces deux éléments vous seront peut-être utiles :

    http://doc.qt.nokia.com/qq/qq24-delegates.html
    http://qt.developpez.com/faq/?page=q...core-delegates

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 71
    Points
    71
    Par défaut
    Bonjour,

    Citation Envoyé par Necko Voir le message
    Je dois donc reimplementer la fonction setData et recupere le QAbstractItem lorsque l'utilisateur selectionne un element de la liste ?
    A priori, les couleurs du texte ne font pas partie du modèle, donc ce n'est pas setData qui doit les renvoyer.

    Une simple feuille de styles devrait suffire ici: http://qt.developpez.com/doc/latest/...zing-qlistview

Discussions similaires

  1. [WD-2007] modèle Word intégralement personnalisé
    Par brune59 dans le forum Word
    Réponses: 3
    Dernier message: 26/07/2012, 20h23
  2. edition personnalisé via modéle edition et champ modéle de données
    Par locs31 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 30/01/2012, 01h06
  3. Modèle/vue , modèle personnalisé
    Par Kymic dans le forum Qt
    Réponses: 4
    Dernier message: 01/08/2009, 18h15
  4. Réponses: 1
    Dernier message: 25/03/2009, 20h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo