我想知道如何在Qt框架中實現自己的QAbstractItemModel :: span函數?我知道Qt5還沒有實現該功能。Qt:實現QAbstractItemModel的跨度
我試着爲我的自寫模型重新實現該函數,並通過使用span()來使用span功能。 第一次嘗試根本沒有奏效。因此,我在該重新實現的函數中設置了一個斷點。我意識到Qt從不會觸發該函數(斷點未命中)。
可以幫助我如何實現該功能,以便我不必從視圖控制器內使用setSpan?
我想知道如何在Qt框架中實現自己的QAbstractItemModel :: span函數?我知道Qt5還沒有實現該功能。Qt:實現QAbstractItemModel的跨度
我試着爲我的自寫模型重新實現該函數,並通過使用span()來使用span功能。 第一次嘗試根本沒有奏效。因此,我在該重新實現的函數中設置了一個斷點。我意識到Qt從不會觸發該函數(斷點未命中)。
可以幫助我如何實現該功能,以便我不必從視圖控制器內使用setSpan?
感謝丹尼爾·卡斯特羅,我解決了這個如下所示:
QAbstractItemView中的重新實現則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());
}
}
}
與化QAbstractItemModel的重新實現跨功能:
QSize model_DndLinBatch::span(const QModelIndex &index) const
{
if (index.column() == 0)
{
return QSize(2,1);
}
else
{
return QAbstractItemModel::span(index);
}
}
Kee記住這個解決方案只有在模型保持不變的情況下才有效。該模型可能會改變導致跨度變化的因素。 – mefiX
的醫生說化QAbstractItemModel: :span()目前沒有使用,所以我認爲你必須修改QTableView(或者你正在使用的任何視圖),所以它使用模型中的span() –