Hi all,
 
I am trying to fill a QStandardItemModel with QStandardItems that contain 
custom data. Unfortunately I came across a similar outcome as before when I had 
tried to use a Custom Delegate (see my previous mails "QItemDelegate for 
*non-primitives* using QComboBox"): There is trouble with non-Qt objects.
It seems you have to create a new instance of QStandardItem every time the 
content of your model changes.  Is that the very same bug as before or a new 
issue?
My system runs with JRE 1.6.0, Jambi 4.4, and Windows XP.
 
The following is a very small sample program that shows what I mean.

import java.awt.Point;
import com.trolltech.qt.core.Qt;
import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QStandardItem;

public class SetDataSample
{
    public static void main(String args[])
    {
        QApplication.initialize(args);
        SetDataSample sample = new SetDataSample();
        QApplication.exec();
    }
    
    public SetDataSample()
    {
        Point point1 = new Point(1,1);
        Point point2 = new Point(2,2);
        Integer int3 = new Integer(3);  // Qt seems to be able to cast Integer 
into something it understands
        
        // Round 1
        QStandardItem item = new QStandardItem();
        item.setData(point1, Qt.ItemDataRole.UserRole);
        Object debug1 = item.data(Qt.ItemDataRole.UserRole);
        System.out.println(debug1);                                    // 
success: "java.awt.Point[x=1,y=1]"
        
        // Round 2
        item.setData(point2, Qt.ItemDataRole.UserRole);                // 
trying to change the data
        Object debug2 = item.data(Qt.ItemDataRole.UserRole);
        System.out.println(debug2);                                    // 
failure: "java.awt.Point[x=1,y=1]" instead of "java.awt.Point[x=2,y=2]"
        
        // Round 3 - this time with Integer (Qt seems to be able to cast that 
into something it understands)
        item.setData(int3, Qt.ItemDataRole.UserRole);                // trying 
to change the data
        Object debug3 = item.data(Qt.ItemDataRole.UserRole);
        System.out.println(debug3);                                    // 
success: "3"
    }
}


Curt
 
 

_______________________________________________
Qt-jambi-interest mailing list
[email protected]
http://lists.trolltech.com/mailman/listinfo/qt-jambi-interest

Reply via email to