我有处理数据的QSqlQueryModel,我试图将Qt :: UserRole设置为列 但我无法想办法实现数据方法: 基本上我想要的是隐藏ndex.column()4的Qt :: DisplayRole并将其设置为Qt :: UserRole
QVariant MyListSqlModel::data(const QModelIndex &index, int role) const
{
QVariant value = QSqlQueryModel::data(index, role);
QVariant valueEmpty = "";
int j = index.column();
if (value.isValid() && role == Qt::DisplayRole && j== 4 )
{
QModelIndex LinkIndex = QSqlQueryModel::index(index.row(),4);
setData(LinkIndex,value,Qt::UserRole); // this is not working and gives me erorr
return valueEmpty;
}
else
{
return value;
}
}
它给我这个错误,我知道它的实现方法是不是const
error C2662: 'MyListSqlModel::setData' : cannot convert 'this' pointer from 'const MyListSqlModel' to 'MyListSqlModel&'
但是这样做的正确方法是什么?
答案 0 :(得分:1)
我从代码中了解到您要忽略第4列的Qt::DisplayRole
。在这种情况下,您不必处理UserRole
但只返回空QVariant
QVariant MyListSqlModel::data(const QModelIndex &index, int role) const
{
if(index.column() == 4 && role == Qt::DisplayRole)
return QVariant();
//else process the data in ususal way
}
如果我误解了这个问题,请纠正我
修改强>
感谢您的评论。我已经开始为我的模型使用自定义角色。工作流程如下:
在标题
中定义自定义用户角色
enum MyDataRoles {
MyDisplayRole = Qt::UserRole + 10
}
现在
setData
我正在使用here的代码段。要获取数据,您可以使用here中的代码段。您只需检查
即可MyDisplayRole
我希望有帮助:)