如何在Qt列表中推送值?

时间:2015-11-24 10:37:51

标签: c++ qt qml qlist

在头文件中,我有这个:

private:  
    Q_PROPERTY(QList <QList <QString> > dummy READ dummy WRITE setDummy NOTIFY dummyChanged)

    QList <QList <QString> > m_dummy;

public:  
    QList <QList <QString> > dummy() const
        {
            return m_dummy;
        }

public slots:
    void setDummy(QList <QList <QString> > arg)
        {
            if (m_dummy == arg)
                return;

            m_dummy = arg;
            emit dummyChanged(arg);
        }

signals:      
    void dummyChanged(QList <QList <QString> > arg);

在CPP文件中,在我编写的函数中:

QList <QString> p;
p.push_back("abc");
p.push_back("def");

QList <QString> q;
q.push_back("ghi");
q.push_back("jkl");

dummy.push_back (p);
dummy.push_back (q);

我得到的编译错误是:

错误:&#39;((TablesAndChartsDatabaseQueries *)this) - &gt; TablesAndChartsDatabaseQueries :: dummy&#39;没有班级类型      dummy.push_back(p);

我错过了什么点?

3 个答案:

答案 0 :(得分:2)

我认为你需要调用函数dummy()而不是直接访问dummy。请尝试dummy().push_back()dummy().append()

使用.bla()访问函数会出现编译错误:

memberFunction.bla() -> does not have class type,刚测试过。

所以你的“dummy.push_back()”试图以错误的方式使用该函数而不是属性。

答案 1 :(得分:1)

thomas_b pointed out the error correctly如下:

  

我猜你应该调用m_dummy.push_back(p)而不是dummy.push_back(p),因为dummy是获取&#34; dummy&#34;的方法。

我认为,设置所需值的更好方法是调用setDummy函数并让它完成为其创建的工作。

QList <QList <QString> > localDummy;
QList <QString> p;
p.push_back("abc");
p.push_back("def");

QList <QString> q;
q.push_back("ghi");
q.push_back("jkl");

localDummy.push_back (p);
localDummy.push_back (q);

setDummy (localDummy);

答案 2 :(得分:-1)

尝试使用dummy.append(q)dummy.insert(q.size(), q)

我想知道&#34; READ dummy WRITE setDummy NOTIFY dummyChanged&#34;装置