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