创建QModelIndex

Met*_*ing 5 qt qmodelindex

我花了最后一周努力创建一个给定行和列的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,但是为了使用我指定的行/列创建了该索引.

xan*_*der 8

我不确定这是您想要的,但您可以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)

  • 我认为真正的困难来自于对 Qt 的陌生。我想你说的就是我想要的和尝试过的;然而,斗争仍在继续。我已经更新了我的初始帖子以获取更多信息。谢谢你! (2认同)

Tob*_*ght 7

您可以使用其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)

索引本身在创建后是不可变的 - 您无法更改其行,列或父级(除了通过对其后面的模型进行更改来使其无效).