[Qt-interest] How Can I use ListView to show QIcons ?

Kermit Mei kermit.mei at gmail.com
Wed Jun 24 09:53:00 CEST 2009


Hello, community! I wrote the following codes, but I can see nothing.
I'm sure that all the png file is OK.

#ifndef _LISTMODEL_H
#define _LISTMODEL_H

#include <QAbstractListModel>
#include <QList>
#include <QIcon>

class ListModel : public QAbstractListModel
{
  Q_OBJECT
public:
  ListModel(QObject *parent = 0);  
  ~ListModel();
  int rowCount(const QModelIndex &parent = QModelIndex()) const;
  QVariant data(const QModelIndex &index, int role = Qt::DisplayRole)
const;
protected:
  QList<QIcon> icons;
};

#endif //_LISTMODEL_H



///////////////////ListMode.cpp////////////////
#include "ListModel.h"

ListModel::ListModel(QObject *parent)
  : QAbstractListModel(parent)
{
  icons.append(QIcon(":/images/tv.png"));
  icons.append(QIcon(":/images/upgrade.png"));
  icons.append(QIcon(":/images/vcr.png"));
  qDebug("con");
}

ListModel::~ListModel() 
{
  //Do Nothing Here!
}

int ListModel::rowCount(const QModelIndex &parent) const {
  return icons.size();
}

QVariant ListModel::data(const QModelIndex &index, int role) const {
  if(index.isValid())
    return QVariant(icons.at(index.column()));
  else
    return QVariant();
}


////////////main.cpp////////////////////////

#include <QApplication>
#include <QListView>
#include "ListModel.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Q_INIT_RESOURCE(iconlist);
    QListView listView;
    ListModel listModel;
    listView.setViewMode(QListView::IconMode);
    listView.setModel(&listModel);
    listView.show();
    return app.exec();
}


Hope any helps.

Thanks.

Kermit





More information about the Qt-interest-old mailing list