On Thu, Nov 8, 2012 at 9:55 PM, Nicolás Ulrich <nikola...@gmail.com> wrote: > I got this and it seems to work fine (Qt 4.8), but it's not a model. I > remember a similar problem with the constructor but I think it was > because I was using Q_DECLARE_METATYPE(MyClass) instead of > Q_DECLARE_METATYPE(MyClass*). > > ------------------------------ > MyClass.h > ------------------------------ > #ifndef MYCLASS_H > #define MYCLASS_H > > #include <QObject> > #include <QVariant> // needed for Q_DECLARE_METATYPE > > class MyClass : public QObject > { > Q_OBJECT > public: > explicit MyClass(QObject *parent = 0); > ~MyClass(); > > signals: > > public slots: > > private: > > }; > Q_DECLARE_METATYPE(MyClass*) > #endif // MYCLASS_H > > > ---------------------------------------- > main.cpp > ---------------------------------------- > #include <QtDeclarative> // needed for qmlRegisterType > > int main(int argc, char** argv) > { > QApplication app(argc, argv); > qmlRegisterType<MyClass>("MyClass", 1, 0, "MyClass"); > ... > > ----------------------------- > QML > ----------------------------- > > import MyClass 1.0 > > ... > MyClass {} > > > > > > On Thu, Nov 8, 2012 at 3:09 PM, Mark <mark...@gmail.com> wrote: >> On Thu, Nov 8, 2012 at 6:43 PM, Nicolás Ulrich <nikola...@gmail.com> wrote: >>> Are you really using this? >>> qRegisterMetaType<PathModel*>("PathModel*"); (with the * in >>> the string) >>> >>> I guess it should be >>> qRegisterMetaType<PathModel*>("PathModel"); >>> >>> >>> >>> On Thu, Nov 8, 2012 at 10:36 AM, Mark <mark...@gmail.com> wrote: >>>> On Thu, Nov 8, 2012 at 10:34 AM, Bo Thorsen <b...@fioniasoftware.dk> wrote: >>>>> Den 08-11-2012 01:33, Mark skrev: >>>>>> Hi, >>>>>> >>>>>> I have a models in C++ (a QStringList actually). In QML i'm displaying >>>>>> it using a repeater. Now when i remove some items from the end of the >>>>>> list (which happens quite a few times) then the entire list seems to >>>>>> go through the QML repeater again. >>>>>> >>>>>> What i want to do is put a QStringList in a QML Repeater (works), but >>>>>> when i remove items from the end i would like QML to be "smart" and >>>>>> also remove the items from the end and leave those that haven't >>>>>> changed. Thus not re-inserting all the items in the repeater when not >>>>>> needed. >>>>>> >>>>>> Is there some option to get that? >>>>> >>>>> To do this you need a better model than a QStringList in Repeater. Take >>>>> a look at QStringListModel instead. But if you just call setStringList() >>>>> you won't see any improvement. You have to use insertRows and removeRows >>>>> instead. >>>>> >>>>> Bo Thorsen. >>>>> >>>>> Come by my DevDays talk in Berlin - "Designing for testability". Learn >>>>> how to build and run your unit tests with the Qt application. >>>>> >>>>> Fionia Software - Qt experts for hire. >>>>> >>>>> _______________________________________________ >>>>> Interest mailing list >>>>> Interest@qt-project.org >>>>> http://lists.qt-project.org/mailman/listinfo/interest >>>> >>>> Thanks a lot for that, that will probably work. >>>> However, i'm hitting another issue when trying to make a custom >>>> StringListModel (only due to setRoleNames...) This is how it looks: >>>> >>>> // pathmodel.h >>>> #ifndef PATHMODEL_H >>>> #define PATHMODEL_H >>>> >>>> #include <QStringListModel> >>>> >>>> class PathModel : public QStringListModel >>>> { >>>> public: >>>> PathModel(); >>>> }; >>>> >>>> Q_DECLARE_METATYPE(PathModel*) >>>> >>>> #endif // PATHMODEL_H >>>> >>>> >>>> // pathmodel.cpp >>>> #include "pathmodel.h" >>>> >>>> PathModel::PathModel() >>>> { >>>> QHash<int,QByteArray> roleNames; >>>> roleNames.insert(Qt::DisplayRole, "modelData"); >>>> setRoleNames(roleNames); >>>> } >>>> >>>> Now if i want to register the new meta type using: >>>> qRegisterMetaType<PathModel*>("PathModel*"); >>>> >>>> The app instantly crashes when i run it.. It must be something very >>>> obvious that i'm missing, but i don't see it. >>>> >>>> Any idea what i'm doing wrong? >>>> _______________________________________________ >>>> Interest mailing list >>>> Interest@qt-project.org >>>> http://lists.qt-project.org/mailman/listinfo/interest >> >> Yes. >> >> But even if i change it to your suggestion it doesn't work. It's all >> in the private copy ctor...
Hi, Thank you for the attempt, but models really are a different beast and not comparable to making a QML Component (like you just did). Right now i'm "solving" it by sending my model to QML directly using setContextProperty but that's not what i want to do.. _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest