【发布时间】:2014-04-15 14:43:08
【问题描述】:
我想使用 QTableView 来显示项目的不同角色,例如第 1 列显示 DisplayRole 数据,第 2 列显示 UserRole,第 3 列显示 UserRole+1,等等
我通过创建自己的项目委托并将其分配给适当的列来创建它。但是,要访问同一个项目,代表必须访问他们的兄弟姐妹。例如,这是我的 setEditorData 函数:
void UserRoleDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
QModelIndex baseIndex = index.sibling(index.row(),0);
QVariant v = baseIndex.data(Qt::UserRole);
if(v.isValid())
static_cast<QLineEdit*>(editor)->setText(v.toString());
}
现在,第 0 列包含真实对象是硬编码的,而其他列只是通过兄弟函数访问它。不过,我担心它很脆弱,因为更改列顺序会破坏它。
有明显的方法来管理它,但我只是想知道我是否采取了正确的方法。是否有更好的选择来显示同一项目的不同方面?
【问题讨论】:
标签: qt qtableview