首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建QModelIndex

创建QModelIndex
EN

Stack Overflow用户
提问于 2017-02-27 22:00:45
回答 2查看 21.3K关注 0票数 8

我花了一周的时间来创建一个给定一行和一列的QModelIndex。

或者,我也可以在已经存在的QModelIndex中更改row()的值。

任何帮助都将不胜感激。

编辑:

代码语言:javascript
复制
QModelIndex nIndex = QAbstractItemModel::createIndex(1, 2);
int b = nIndex.row();
qInfo() << "b" << b;

失败并返回错误:

代码语言:javascript
复制
cannot call member function ‘QModelIndex QAbstractItemModel::createIndex(int, int, void*) const’ without object
         QModelIndex nIndex = QAbstractItemModel::createIndex(1, 2);
                                                                  ^

手头的目标是:

我有一个函数:

代码语言:javascript
复制
void MyClass::doStuff(QModelIndex index)

在这个类中,我基本上做了以下工作:

代码语言:javascript
复制
if (index.column() != 1)
{
    int a=index.row();
}

因此,我的目标是从另一个类调用该函数,并向其传递一个QModelIndex,但该索引是使用我指定的行/列创建的。

EN

回答 2

Stack Overflow用户

发布于 2017-02-27 22:04:42

我不确定这是不是您想要的,但是您可以使用QAbstractItemModel::index(row, column) ( http://doc.qt.io/qt-5/qabstractitemmodel.html#index )方法创建一个QModelIndex!?另一方面,这似乎对你来说太简单了,你要与之斗争这么长时间,也许可以多解释一点。

示例:

代码语言:javascript
复制
QAbstractTableModel *model = ...;

// then you can do something like
QModelIndex nIndex = model->index(1,2);
int b = nIndex.row();
qInfo() << "b" << b;
票数 8
EN

Stack Overflow用户

发布于 2017-02-27 22:49:29

您可以使用适当的模型的index()方法从相应的模型获取新的索引。

如果模型中已经有一个索引,并且与所需的索引具有相同的父项,则可以使用该索引的sibling()方法获取另一个索引:

代码语言:javascript
复制
void MyClass::doStuff(const QModelIndex& index)
{
    // get the value at row zero, same column
    const QModelIndex header = index.sibling(0, index.column());
}

索引本身一旦创建就是不可变的--你不能改变它的行、列或父元素(除了通过在背后修改模型来使其无效)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42487645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档