如何在 Qt 的列表列表中推送值?

How to push values in a list of lists in Qt?

在头文件中,我有这个:

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);

我得到的编译错误是:

错误:'((TablesAndChartsDatabaseQueries*)this)->TablesAndChartsDatabaseQueries::dummy' 没有 class 类型 dummy.push_back (p);

我错过了什么?

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

我想知道 "READ dummy WRITE setDummy NOTIFY dummyChanged" 是什么意思。

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

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

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

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

如下:

I guess you should call m_dummy.push_back(p) and not dummy.push_back(p) because dummy is the method to get the "dummy".

我认为,设置所需值的更好方法是调用 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);