-3

リストを印刷するためのListというクラスがあります

class List : public QAbstractListModel
{
Q_OBJECT
Q_ENUMS(Roles)

公開:

enum Roles {
    address =  Qt::UserRole + 1,
    name
};

DeviceList(QObject *parent = 0);

void addrows(const Manager &client);

int rowCount(const QModelIndex & parent = QModelIndex()) const;
QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;

保護された:

QHash<int, QByteArray> roleNames() const;

プライベート:

  QList< Manager > m_client;
};

そして別のクラスマネージャーとして

class Manager : public QObject
{
    Q_OBJECT

    Q_PROPERTY(List* List READ getList CONSTANT)

公開:

 Manager(const QString &address, const QString &name);

    QString address() const;
    QString name() const;

    virtual  List* getList() = 0;

プライベート:

 QString m_address;
    QString m_name;

};

今、私は manager.cpp に行を追加しようとます

void List::addrows(const Manager &client)
{
    beginInsertRows(QModelIndex(), rowCount(), rowCount());

    m_client << client; // **i am getting error here** 

    endInsertRows();
}

私の意図は、 manager.cpp ファイルに getlist を 実装することです

List*  Manager :: getList()
{
   List* list = new  List();

    list->addrows(Manager("street1","John"));
    list->addrows(Manager("street2:","Tim"));
    list->addrows(Manager("street3","Roberrt"));

    return list;
}
4

1 に答える 1

0

演算子 << を使用するには、クラス Manager で演算子 = をオーバーライドする必要があります。その代わりに List を使用し、リスト要素をポインタとして扱います。

于 2016-06-07T14:53:04.753 に答える