-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中的addrows添加为

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

为了使用操作符 <<,您必须在类管理器中覆盖操作符 =。而不是这样做,而是使用 List 并将列表元素作为指针处理。

于 2016-06-07T14:53:04.753 回答