我花了一周的时间来创建一个给定一行和一列的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,但该索引是使用我指定的行/列创建的。
发布于 2017-02-27 22:04:42
我不确定这是不是您想要的,但是您可以使用QAbstractItemModel::index(row, column) ( http://doc.qt.io/qt-5/qabstractitemmodel.html#index )方法创建一个QModelIndex!?另一方面,这似乎对你来说太简单了,你要与之斗争这么长时间,也许可以多解释一点。
示例:
QAbstractTableModel *model = ...;
// then you can do something like
QModelIndex nIndex = model->index(1,2);
int b = nIndex.row();
qInfo() << "b" << b;发布于 2017-02-27 22:49:29
您可以使用适当的模型的index()方法从相应的模型获取新的索引。
如果模型中已经有一个索引,并且与所需的索引具有相同的父项,则可以使用该索引的sibling()方法获取另一个索引:
void MyClass::doStuff(const QModelIndex& index)
{
// get the value at row zero, same column
const QModelIndex header = index.sibling(0, index.column());
}索引本身一旦创建就是不可变的--你不能改变它的行、列或父元素(除了通过在背后修改模型来使其无效)。
https://stackoverflow.com/questions/42487645
复制相似问题