2015-12-12 5 views
0

Я занимаюсь разработкой QML приложений с C++, но я в настоящее время застрял с, может быть простой, ошибка:C++, QT Ошибка при назначении QList <T> на QList <T>

C:\Qt\5.2.1\mingw48_32\include\QtCore\qvector.h:679: error: no match for 'operator==' (operand types are 'ListModel' and 'ListModel') if (!(*--i == *--j)) ^

Мой заголовок является:

#ifndef COMBOBOXUPDATE_H 
#define COMBOBOXUPDATE_H 
#include <QObject> 
#include <QStringList> 
#include <QString> 
#include <QVector> 

struct ListModel; 

class ComboboxUpdate:public QObject 
{ 
Q_OBJECT 
Q_PROPERTY(QVector<ListModel> comboList READ comboList) 

public: 

    ComboboxUpdate(QObject *parent = 0); 
    QVector<ListModel> comboList(); 
    void setComboList(QVector<ListModel> &comboList); 

private: 
QVector<ListModel> m_comboList; 
int   m_count; 
}; 

struct ListModel 
{ 
ListModel(); 
ListModel(QString _text,int _Sqlid) 
{ 
    text=_text; 
    Sqlid=_Sqlid; 
} 
QString text; 
int  Sqlid; 
}; 
#endif // COMBOBOXUPDATE_H 

ошибка возникает в этом коде области в файле реализации:

void ComboboxUpdate::setComboList( QVector<ListModel> &comboList) 
{ 
    if (m_comboList != comboList) 
    { 
     m_comboList = comboList; 
    } 
} 

I C annot понять, почему эта проблема возникает. Моя основная цель - заполнение combobox со стороны C++ с использованием таких вещей, как ListElement. Я могу успешно заполнить, используя QStringList. Но я хочу заполнить как ListElement. Например:

ComboBox { 
    model: ListModel { 
       ListElement {sqlid:"1"; text:"Pansi"} 
       ListElement {sqlid:"2"; text:"Rose"} 
       ListElement {sqlid:"3"; text:"Clips"} 
      } 
    anchors.fill: parent 
} 

На стороне QML эта модель показывает текст в ComboBox и сохраняет значения в SQLite. Как я могу это сделать на стороне C++?

ответ

2

Вам необходимо указать operator== для вашего класса ListModel. Например:

struct ListModel 
{ 
    bool operator==(const ListModel& other) const { 
     return other.text == text && other.Sqlid == Sqlid; 
    } 
}; 
Смежные вопросы