Hi,
I don't understand why nothing is displaying (neither header and data) if
I'm using a QTreeView and my own model which inherits QAbstractItemModel.
Btw if I use a QStandardItemModel instead, it works fine. Don't understand
why ??
Best Regards,
Vincent
Here's my code:
------------- 8< ----------------------------------------------------
package org.workshop;
import com.trolltech.qt.core.QObject;
import com.trolltech.qt.core.Qt.Orientation;
import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QStandardItemModel;
import com.trolltech.qt.gui.QWidget;
public class MyTreeWidget extends QWidget {
Ui_MyTreeWidget ui = new Ui_MyTreeWidget();
public static void main(String[] args) {
QApplication.initialize(args);
MyTreeWidget testMyTreeWidget = new MyTreeWidget();
testMyTreeWidget.show();
QApplication.exec();
}
public MyTreeWidget() {
ui.setupUi(this);
init();
}
public MyTreeWidget(QWidget parent) {
super(parent);
ui.setupUi(this);
init();
}
private void init(){
ui.treeView.setModel(createMyStandardItemModel(this));
ui.treeView_2.setModel(createMyCustomItemModel(this));
}
private QStandardItemModel createMyStandardItemModel(QObject parent){
QStandardItemModel model = new QStandardItemModel(3,4,parent);
model.setHeaderData(0, Orientation.Horizontal, "A");
model.setHeaderData(1, Orientation.Horizontal, "B");
model.setHeaderData(2, Orientation.Horizontal, "C");
model.setHeaderData(3, Orientation.Horizontal, "D");
model.setData(0, 0, "A1");
model.setData(0, 1, "B1");
model.setData(0, 2, "C1");
model.setData(0, 3, "D1");
model.setData(1, 0, "A2");
model.setData(1, 1, "B2");
model.setData(1, 2, "C2");
model.setData(1, 3, "D2");
model.setData(2, 0, "A3");
model.setData(2, 1, "B3");
model.setData(2, 2, "C3");
model.setData(2, 3, "D3");
return model;
}
private MyCustomItemModel createMyCustomItemModel(QObject parent){
MyCustomItemModel model = new MyCustomItemModel(parent);
return model;
}
}
------------- 8< ----------------------------------------------------
------------- 8< ----------------------------------------------------
package org.workshop;
import java.util.ArrayList;
import java.util.List;
import com.trolltech.qt.core.QAbstractItemModel;
import com.trolltech.qt.core.QModelIndex;
import com.trolltech.qt.core.QObject;
import com.trolltech.qt.core.Qt.ItemFlag;
import com.trolltech.qt.core.Qt.ItemFlags;
import com.trolltech.qt.core.Qt.Orientation;
public class MyCustomItemModel extends QAbstractItemModel {
private List<String[]> datas = new ArrayList<String[]>();
public MyCustomItemModel(QObject parent){
super(parent);
datas.add(new String[]{"A1", "B1", "C1", "D1"});
datas.add(new String[]{"A2", "B2", "C2", "D2"});
datas.add(new String[]{"A3", "B3", "C3", "D3"});
}
@Override
public Object headerData(int section, Orientation orientation, int role)
{
String header = null;
switch (section) {
case 0: header = "A"; break;
case 1: header = "B"; break;
case 2: header = "C"; break;
case 3: header = "D"; break;
}
System.out.println("header: " + header);
return header;
}
@Override
public int columnCount(QModelIndex parent) {
return 4;
}
@Override
public Object data(QModelIndex index, int role) {
System.out.println("index: " + index);
int row = index.row();
int column = index.column();
if (index != null && row >= 0 && row < datas.size()) {
String[] rowData = datas.get(row);
if (column >= 0 && column < columnCount()){
System.out.println("data: " + rowData[column]);
return rowData[column];
}
}
return null;
}
@Override
public QModelIndex index(int row, int column, QModelIndex parent) {
if (parent == null){
return createIndex(row, column, 1);
}
return null;
}
@Override
public QModelIndex parent(QModelIndex child) {
return null;
}
@Override
public int rowCount(QModelIndex parent) {
return datas.size();
}
@Override
public ItemFlags flags(QModelIndex index) {
if (index == null) {
return new ItemFlags(ItemFlag.ItemIsEnabled);
}
ItemFlags flags = super.flags(index);
flags.set(ItemFlag.ItemIsEditable);
return flags;
}
}
------------- 8< ----------------------------------------------------
------------- 8< ----------------------------------------------------
/********************************************************************************
** Form generated from reading ui file 'MyTreeWidget.jui'
**
** Created: mar. 27. janv. 15:33:57 2009
** by: Qt User Interface Compiler version 4.4.2
**
** WARNING! All changes made in this file will be lost when recompiling ui
file!
********************************************************************************/
package org.workshop;
import com.trolltech.qt.core.*;
import com.trolltech.qt.gui.*;
public class Ui_MyTreeWidget
{
public QTreeView treeView;
public QTreeView treeView_2;
public Ui_MyTreeWidget() { super(); }
public void setupUi(QWidget MyTreeWidget)
{
MyTreeWidget.setObjectName("MyTreeWidget");
MyTreeWidget.resize(new QSize(724,
387).expandedTo(MyTreeWidget.minimumSizeHint()));
treeView = new QTreeView(MyTreeWidget);
treeView.setObjectName("treeView");
treeView.setGeometry(new QRect(50, 40, 256, 192));
treeView.setFocusPolicy(com.trolltech.qt.core.Qt.FocusPolicy.WheelFocus);
treeView_2 = new QTreeView(MyTreeWidget);
treeView_2.setObjectName("treeView_2");
treeView_2.setGeometry(new QRect(400, 40, 256, 192));
treeView_2.setFocusPolicy(com.trolltech.qt.core.Qt.FocusPolicy.WheelFocus);
treeView_2.setRootIsDecorated(false);
treeView_2.setItemsExpandable(false);
retranslateUi(MyTreeWidget);
MyTreeWidget.connectSlotsByName();
} // setupUi
void retranslateUi(QWidget MyTreeWidget)
{
MyTreeWidget.setWindowTitle(com.trolltech.qt.core.QCoreApplication.translate("MyTreeWidget",
"Form"));
} // retranslateUi
}
------------- 8< ----------------------------------------------------
_______________________________________________
Qt-jambi-interest mailing list
[email protected]
http://lists.trolltech.com/mailman/listinfo/qt-jambi-interest