View Single Post
Posts: 124 | Thanked: 10 times | Joined on Jan 2007 @ Italy
#18
i dunno how, but now it works :P
jk, i know how...i've change a bit the original code

Now i've a QList<Service*> services, so no list in the heap(as gri suggested). I still have a list of pointer but change code in order to save object pointed instead of pointer(as it logically should be).

In service class now i've:
Q_DECLARE_METATYPE(Service);
Q_DECLARE_METATYPE(Service*);

the first is necessary to save object:
Code:
 QByteArray array;
       QDataStream data(&array, QIODevice::ReadWrite);
       data << services.size();
       foreach(Service* service, services){
         data << *service;
     }
and load:
Code:
QVariant var = settings->value("services");
        QByteArray array;
        array =var.value<QByteArray>();
        QDataStream data(&array,QIODevice::ReadWrite);
        int size;
        data>> size;
       for(int i=0; i<size;i++){
            Service *service = new Service();
            data >> *service;
            services.append(service);
        }
the second one is to set data in QListWidget:
Code:
 QListIterator<Service*> i(services);
    while(i.hasNext()){
        Service *service = new Service();
        service = i.next();
        QListWidgetItem * item= new QListWidgetItem(service->getName());
        item->setSizeHint(QSize(300, 100));
        item->setTextAlignment(Qt::AlignCenter);
       QVariant var;
        var.setValue(service);
        item->setData(Qt::UserRole, var);
        ui->listWidget->addItem(item);
    }
and share pointer to other classes:
Code:
Service *service= new Service();
    service = (item->data(Qt::UserRole).value<Service*>());
    ConfigWindow *configwindow = new ConfigWindow(service, this);
    configwindow->show();
using a list of pointer i can't use << and >> operator with list, so i've to manage single elements!
maybe it's not pretty elegant, but works well

thanks to all for help

ps. venemo your code will be usefull when i'll get into "user interface", i've seen interesting code about rotation management