QListView zeigt nichts an

Alles rund um die Programmierung mit Qt
Antworten
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

QListView zeigt nichts an

Beitrag von Mani99 »

Hi,

ich habe ein listview mit model, im model sind daten vorhanden, und data() gibt auch daten zurück, nur im listview wird nichts angezeigt, hab ich event. etwas übersehen?

Code: Alles auswählen

#ifndef LISTVIEWTESTMODEL_H
#define LISTVIEWTESTMODEL_H

#include <QAbstractListModel>
#include <QStringList>

class ListViewTestModel : public QAbstractListModel
{
    Q_OBJECT

    public:
        explicit ListViewTestModel(QObject *parent = 0);

        QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
        int rowCount(const QModelIndex &parent) const;
        bool addTestData(QString testData);

    private:
        QStringList list_data;

};

#endif // LISTVIEWTESTMODEL_H

Code: Alles auswählen

#include "listviewtestmodel.h"

ListViewTestModel::ListViewTestModel(QObject *parent) : QAbstractListModel(parent)
{
}

QVariant ListViewTestModel::data(const QModelIndex &index, int role) const
{
    Q_UNUSED(role)

    if(!index.isValid())
        return QVariant();

    if(list_data.count() < index.row())
        return QVariant();

    QString row_data = list_data.at(index.row());

    return row_data;
}

bool ListViewTestModel::addTestData(QString testData)
{
    beginInsertRows(QModelIndex(), list_data.size(), list_data.size());
    list_data.append(testData);
    endInsertRows();

    return true;
}

int ListViewTestModel::rowCount(const QModelIndex &parent) const
{
    if(parent.isValid())
        return 0;

    return list_data.count();
}
Die hauptform ist einfach ein mainwindow mit listview darauf.

Code: Alles auswählen

    ui->setupUi(this);

    lv_model = new ListViewTestModel();
    
    ui->listView->setModel(lv_model);

    lv_model->addTestData("Test1");
    lv_model->addTestData("Test2");
    lv_model->addTestData("Test3");
    lv_model->addTestData("Test4");
    lv_model->addTestData("Test5");
    lv_model->addTestData("Test6");
    lv_model->addTestData("Test7");
Danke!
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Bei rowCount würde ich immer die Zeilenzahl zurückgeben und bei data() den Inhalt nur wenn DisplayRole || EditRole abgefragt wird.
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

warum nicht QStringListModel ?
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
Antworten