小编alp*_*pex的帖子

设置QStringListModel项的自定义数据

我有QStringListModel

QStringListModel* blocksModel = new QStringListModel();
Run Code Online (Sandbox Code Playgroud)

还有一个继承自QObject的类

class Block : public QObject
{
    Q_OBJECT

public:

    Block();
    Block(const Block& other);
    ~Block;

//and other stuff here    

};
Q_DECLARE_METATYPE(Block*)
Run Code Online (Sandbox Code Playgroud)

当我为Qt :: EditRole设置数据时,一切正常,但是当我尝试为Qt :: UserRole设置数据时,它永远不会返回true,当我获取数据时,我看到无效的QVariant

int count = blocksModel->rowCount();
blocksModel->insertRows(count, 1);
QModelIndex index = blocksModel->index(count, 0);

// it works
QString name = QString("Block %1").arg(count + 1);
blocksModel->setData(index, name);

QVariant var = QVariant::fromValue(block);
// it doesn`t work
bool setSuccessful = blocksModel->setData(index, var, Qt::UserRole);

//invalid QVariant
QVariant var2 = index.data(Qt::UserRole);
Block* oneMoreBlock = var2.value<Block*>();
Run Code Online (Sandbox Code Playgroud)

事实上,无论我试图为项目设置哪种类型的数据,这也不起作用:

blocksModel->setData(index, …
Run Code Online (Sandbox Code Playgroud)

c++ qt model qabstractitemmodel

4
推荐指数
1
解决办法
2530
查看次数

标签 统计

c++ ×1

model ×1

qabstractitemmodel ×1

qt ×1