> On 21 May 2025, at 08:47, Volker Hilsheimer via Development > <development@qt-project.org> wrote: > > > >> On 20 May 2025, at 12:50, Giuseppe D'Angelo <giuseppe.dang...@kdab.com> >> wrote: >> >> On 20/05/2025 10:26, Richard Gustavsen wrote: >>> Would it be more convenient to put the range API directly on QRangeModel >>> instead? E.g: >>> QRangeModel model({1, 2, 3, 4, 5}); >>> listView.setModel(&model); >>> model.erase(model.begin()); >>> model[0] = x; >>> model.push_back(y); >> >> Yes, this is an important question -- in order to understand the future of >> this API, and thus the name of the class. > > > It would of course be more convenient. But for that to work (ie. for us to > know what model.begin() is, what operator[] returns, and what ‘y’ can be), > QRangeModel has to be a template class. > > And it isn’t, and shouldn’t be, as a subclass of a polymorphic type for the > reasons discussed (weak vtables, and vtable bloat for each specialization). > > The only alternative I see is making it a value type that can implicitly > convert to a QAbstractItemModel *. But that’s then not a model itself, and > shouldn’t be called “Model". It would then be a QRangeModelAdapter (although > I wouldn’t want it to implicitly convert to QAbstractItemModel *). > > Volker
Change at https://codereview.qt-project.org/c/qt/qtbase/+/647408 needs a +2. Volker -- Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development