Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QtAbstractItemModel endInsertColumns()索引超出范围_C++_Qt_Qtableview - Fatal编程技术网

C++ QtAbstractItemModel endInsertColumns()索引超出范围

C++ QtAbstractItemModel endInsertColumns()索引超出范围,c++,qt,qtableview,C++,Qt,Qtableview,我正在尝试为QTtablewiw实现我自己的模型。但我在向模型中插入列时遇到了问题。下面是我自己的insertColumns方法的代码: bool DbTableModel::insertColumns(int column, int count, const QModelIndex &parent) { Q_D(DbTableModel); beginInsertColumns(parent,column,column+count); d->table-&

我正在尝试为QTtablewiw实现我自己的模型。但我在向模型中插入列时遇到了问题。下面是我自己的insertColumns方法的代码:

bool DbTableModel::insertColumns(int column, int count, const QModelIndex &parent) {
   Q_D(DbTableModel);

    beginInsertColumns(parent,column,column+count);
    d->table->insertColumn(column, "");
    endInsertColumns();

    return true;
}
以下是如何调用insertColumns:

insertColumns(index,1);
下面是d->table中insertColumn的实现:

void XMLTable::insertColumn(int index, QString name)
{
    Q_D(XMLTable);

    d->columns.insert(d->columns.begin() + index + 1,name);

    for(int i = 0;i < d->data.count();i++)
    {
        if(index + 1 >= d->data[i].count())
        {
            d->data[i].append("");
        }
        else
        {
            d->data[i].insert(index + 1,"");
        }
    }
}
代码在insertColumnsMethod方法中的endInsertColumns上引发错误:

 ASSERT failure in QVector<T>::operator[]: "index out of range", file ..\..\..\Qt\5.4\mingw491_32\include\QtCore/qvector.h, line 396
 Invalid parameter passed to C runtime function.
 Invalid parameter passed to C runtime function.
我的问题是:为什么endInsertColumns抛出错误以及如何修复它


谢谢你的帮助,所以我自己找到了解决办法。问题出在beginInsertColumns方法中。当我试着用这个来称呼它时:

beginInsertColumns(parent,column,column+count);
比上一个索引移动了1。所以我通过修改方法insertColumns的调用解决了这个问题,如下所示:

insertColumns(index,0);

感谢您的帮助。

insertColumnsindex,1;中的索引值是多少;?当前选定列的索引。在调试中,这个值看起来不错,XMLTable中的insertColumn方法工作正常。是的,但它的值是什么?你必须明白,在某一点上,你使用的索引值超出了向量的边界,你需要知道为什么会发生这种情况。如果它看起来不错并且工作正常,那么您的问题是什么?在调用它之前,如果索引>=0,则会出现此情况(&I)索引更改