Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.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++ Qt:qabstractemodel的实现跨度_C++_Qt - Fatal编程技术网

C++ Qt:qabstractemodel的实现跨度

C++ Qt:qabstractemodel的实现跨度,c++,qt,C++,Qt,我想知道如何在Qt框架中实现自己的qabstractemmodel::span函数?我知道Qt5尚未实现该功能 我试图为我自己编写的模型重新实现该函数,并通过使用span()利用span功能。 第一次尝试根本不起作用。因此,我在重新实现的函数中设置了一个断点。我意识到Qt从未触发该函数(断点未命中) 可以帮助我实现该功能,这样我就不必从view controller中使用setSpan了?多亏了Daniel Castro,我解决了这个问题,如下所示: 重新实现QAbstratemView的set

我想知道如何在Qt框架中实现自己的qabstractemmodel::span函数?我知道Qt5尚未实现该功能

我试图为我自己编写的模型重新实现该函数,并通过使用span()利用span功能。 第一次尝试根本不起作用。因此,我在重新实现的函数中设置了一个断点。我意识到Qt从未触发该函数(断点未命中)


可以帮助我实现该功能,这样我就不必从view controller中使用setSpan了?

多亏了Daniel Castro,我解决了这个问题,如下所示:

重新实现QAbstratemView的setModel:

void View_DndLinBatch::setModel(QAbstractItemModel *model)
{
    QTableView::setModel(model);

    for (int row = 0; row < this->model()->rowCount(); row++)
    {
        for (int col = 0; col < this->model()->columnCount(); col++)
        {
            QSize span = this->model()->span(this->model()->index(row, col));
            this->setSpan(row, col, span.height(), span.width());
        }
    }
}

文档说QabstractemModel::span()当前未使用,因此我认为您必须修改QTableView(或您正在使用的任何视图),以便它使用模型中的span()。请记住,只有在模型保持不变的情况下,此解决方案才有效。模型可能会更改,这也会导致跨度更改。
QSize model_DndLinBatch::span(const QModelIndex &index) const
{
    if (index.column() == 0)
    {
        return QSize(2,1);
    }
    else
    {
        return QAbstractItemModel::span(index);
    }
}