Re: Writing a Tree model.
Re: Writing a Tree model.
there is an example in Qt Assistant at QStandardItemModel
Quote:
An example usage of QStandardItemModel to create a tree:
QStandardItemModel model;
QStandardItem *parentItem = model.invisibleRootItem();
for (int i = 0; i < 4; ++i) {
QStandardItem *item = new QStandardItem(QString("item %0").arg(i));
parentItem->appendRow(item);
parentItem = item;
}
also lool at Qt's example QTDIR/examples/itemviews/simpletreemodel/
1 Attachment(s)
Re: Writing a Tree model.
I have written the followinf code to create a tree.
Code:
for (int i = 0; i < m_manufacturerList.count(); ++i)
{
parentItem = item;
QList<QString> modelList = m_pPrivate->m_ManufacturerModel.values(item->text());
parentItem->appendRow(modelList);
for(j = 0; j < modelList.count(); ++j)
{
parentItem = modelList.at(i);
parentItem->appendRow(m_pPrivate->m_ModelBand.values(modelList.at(i)));
}
}
I have a list m_manufacturerList which contins some items.
then in have two multi maps..m_ManufacturerModel and m_ModelBand
I need to show data in the list views... see the attachment.
this is something like MAC finder...view...
how do i implement fucntions... rowCount, index(), parent() etc..
Regards,
GK
Re: Writing a Tree model.
Hi,
I have done this so far...
TreeModel.h
Code:
#ifndef ADD_DEVICES_TREE_PROXY_MODEL_H
#define ADD_DEVICES_TREE_PROXY_MODEL_H
#include <QAbstractItemModel>
#include <QModelIndex>
#include <QVariant>
{
Q_OBJECT
public:
AddDeviceTreeProxyModel
(QObject *parent
= 0);
~AddDeviceTreeProxyModel();
private:
class Private;
Private* const m_pPrivate;
};
#endif // ADD_DEVICES_TREE_PROXY_MODEL_H
TreeModel.cpp
Code:
#include "TreeModel.h"
#include <QStandardItem>
class AddDeviceTreeProxyModel::Private
{
public:
// Constructor.
Private( AddDeviceTreeProxyModel* deviceTree )
: m_AddDeviceTreeProxyModel(deviceTree)
{
}
void setupModelData();
QMultiMap <QString, QString> m_ManufacturerModel;
// Multimap of Manufacturer and Model. QMultiMap <QString, QString> m_ModelBand;
// Multimap of Model and band.
private:
AddDeviceTreeProxyModel* const m_AddDeviceTreeProxyModel;
};
AddDeviceTreeProxyModel
::AddDeviceTreeProxyModel(QObject *parent
) m_pPrivate( new Private( this ))
{
for (int i = 0; i < 5 ; ++i)
{
m_pPrivate->m_manufacturerList.append(tr("Manf%1").arg(i));
}
for (int i = 0; i < m_pPrivate->m_manufacturerList.count() ; ++i)
{
m_pPrivate->m_ManufacturerModel.insert(tr("Manf%1").arg(i), "Model1");
m_pPrivate->m_ManufacturerModel.insert(tr("Manf%1").arg(i), "Model2");
}
for (int i = 0; i < m_pPrivate->m_manufacturerList.count() ; ++i)
{
m_pPrivate->m_ModelBand.insert(tr("Model1").arg(i), "Band1");
m_pPrivate->m_ModelBand.insert(tr("Model1").arg(i), "Band2");
m_pPrivate->m_ModelBand.insert(tr("Model2").arg(i), "Band1");
m_pPrivate->m_ModelBand.insert(tr("Model2").arg(i), "Band2");
}
m_pPrivate->setupModelData();
}
AddDeviceTreeProxyModel::~AddDeviceTreeProxyModel()
{
delete m_pPrivate;
}
int AddDeviceTreeProxyModel
::columnCount(const QModelIndex &parent
) const {
return 0;
}
{
}
Qt
::ItemFlags AddDeviceTreeProxyModel
::flags(const QModelIndex &index
) const{
return Qt::ItemIsEditable;
}
{
}
{
}
int AddDeviceTreeProxyModel
::rowCount(const QModelIndex &parent
) const {
return 0;
}
void AddDeviceTreeProxyModel::Private::setupModelData()
{
}
Main.cpp
Code:
#include <QApplication>
#include "TreeModel.h"
#include "ui_Form.h"
int main(int argc, char** argv)
{
Ui::Form ui;
ui.setupUi(&form);
form.show();
AddDeviceTreeProxyModel model;
ui.listView->setModel( &model );
ui.treeView->setModel( &model );
return a.exec();
}
Please tell me how do i implement rowCount(), columnCount(), index(), parent() functions....
I am stuck... badly
Regards,
GK
Re: Writing a Tree model.
Did you have a look at examples in Qt Demo ??
Re: Writing a Tree model.
yes i have seen ... but could not mould it to implement mine funcitons....