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.