我花了最后一周努力创建一个给定行和列的QModelIndex。
或者,我愿意在已经存在的QModelIndex中更改row()的值。
任何帮助都将不胜感激。
编辑:
QModelIndex nIndex = QAbstractItemModel::createIndex(1, 2);
int b = nIndex.row();
qInfo() << "b" << b;
失败并显示错误:
cannot call member function ‘QModelIndex QAbstractItemModel::createIndex(int, int, void*) const’ without object
QModelIndex nIndex = QAbstractItemModel::createIndex(1, 2);
^
目标是:
我有一个功能:
void MyClass::doStuff(QModelIndex index)
在该课程中,我基本上执行以下操作:
if (index.column() != 1)
{
int a=index.row();
}
所以我的目标是从不同的类调用该函数并将其传递给QModelIndex,但是为了使用我指定的行/列创建该索引。
答案 0 :(得分:6)
您可以使用index()
方法从相应的模型中获取新索引。
如果您已经拥有模型中的索引,并且具有与所需索引相同的父级,那么您可以使用该索引的sibling()
方法获取另一个索引:
void MyClass::doStuff(const QModelIndex& index)
{
// get the value at row zero, same column
const QModelIndex header = index.sibling(0, index.column());
}
索引本身在创建后是不可变的 - 您无法更改其行,列或父级(除了通过对其背后的模型进行更改而使其无效)。
答案 1 :(得分:3)
我不确定这是您想要的,但您可以使用方法QModelIndex
(http://doc.qt.io/qt-5/qabstractitemmodel.html#index)创建QAbstractItemModel::index(row, column)
!另一方面,你似乎很容易与它斗争这么久,或许可以解释一下。
示例:
QAbstractTableModel *model = ...;
// then you can do something like
QModelIndex nIndex = model->index(1,2);
int b = nIndex.row();
qInfo() << "b" << b;