zlosynus
4th August 2008, 12:58
Hi, I am using Qt Jambi. I was trying to subclass QAbstractListModel and use it with QListView. But no data appears at all. Here is code of my subclassed model:
class SmenaDispeceriModel extends QAbstractListModel
{
private List dispeceri = new ArrayList(); // data
public int rowCount(QModelIndex parent)
{
return dispeceri.size();
}
public Object data(QModelIndex index, int role)
{
if (index.row() < 0 || index.row() >= dispeceri.size())
return new Object();
if (role == Qt.ItemDataRole.DisplayRole)
return ((SmenaDispecer) dispeceri.get(index.row())).getDlouheJmeno();
else
return new Object();
}
public void addDispecera(Long id, String jmeno, String prijmeni)
{
dispeceri.add(new SmenaDispecer(id, jmeno, prijmeni));
}
}
Now in dialog I have following sample code:
dispeceriModel = new SmenaDispeceriModel();
dispeceriModel.addDispecera(new Long(1), "Karel", "Novak");
dispeceriModel.addDispecera(new Long(2), "Tomas", "Marny");
ui.listDispeceri.setModel(dispeceriModel);
But the view is empty! When I tried following code, it works fine:
model = new QStandardItemModel();
model.setRowCount(2);
model.setColumnCount(1);
model.setData(model.index(0, 0), "Some text");
model.setData(model.index(1, 0), "Other text");
ui.listDispeceri.setModel(model);
So there have to be some problem with my model, but i dont know where. Please help.
Thanks.
class SmenaDispeceriModel extends QAbstractListModel
{
private List dispeceri = new ArrayList(); // data
public int rowCount(QModelIndex parent)
{
return dispeceri.size();
}
public Object data(QModelIndex index, int role)
{
if (index.row() < 0 || index.row() >= dispeceri.size())
return new Object();
if (role == Qt.ItemDataRole.DisplayRole)
return ((SmenaDispecer) dispeceri.get(index.row())).getDlouheJmeno();
else
return new Object();
}
public void addDispecera(Long id, String jmeno, String prijmeni)
{
dispeceri.add(new SmenaDispecer(id, jmeno, prijmeni));
}
}
Now in dialog I have following sample code:
dispeceriModel = new SmenaDispeceriModel();
dispeceriModel.addDispecera(new Long(1), "Karel", "Novak");
dispeceriModel.addDispecera(new Long(2), "Tomas", "Marny");
ui.listDispeceri.setModel(dispeceriModel);
But the view is empty! When I tried following code, it works fine:
model = new QStandardItemModel();
model.setRowCount(2);
model.setColumnCount(1);
model.setData(model.index(0, 0), "Some text");
model.setData(model.index(1, 0), "Other text");
ui.listDispeceri.setModel(model);
So there have to be some problem with my model, but i dont know where. Please help.
Thanks.