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