alp*_*pex 4 c++ qt model qabstractitemmodel
我有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, QVariant(1), Qt::UserRole);
Run Code Online (Sandbox Code Playgroud)
我尝试了Qt :: UserRole + 1,得到了相同的结果.也许我应该以某种方式定义模型使用的ItemDataRoles?
有任何想法吗?谢谢.
| 归档时间: |
|
| 查看次数: |
2530 次 |
| 最近记录: |