Название: А beginInsertRows() оказывается protected... Отправлено: xintrea от Октябрь 27, 2010, 13:04 Здравствуйте!
Столкнулся сейчас с такой ситуацией. Делаю я абстрактную модель данных, унаследованную от QAbstractItemModel. Эту модель я делаю в "два слоя". Первый слой - это класс с именем TreeModel, унаследованный от QAbstractItemModel. Вот так: Код: class TreeModel : public QAbstractItemModel Второй слой - это класс с именем KnowTreeMode, унаследованный от TreeModel. Вот так: Код: class KnowTreeModel : public TreeModel В классе TreeModel сосредоточены все переопределяемые функции, которые требуется переопределить для работы с видом, и ничего больше. В классе KnowTreeModel сосредоточены всякие прочие сложные функции, которые работают с Item-представлением данных, обеспечивают вставку/удаление целых подветок, рекурсивную обработку данных, прочие вещи. Так вот оказывается, что методы beginInsertRows()/endInsertRow() в QAbstractItemModel являются защищенными (protected), и потому могут вызываться только в TreeModel, а в KnowTreeModel - недоступны. Для взаимодействия с видом у меня используется KnowTreeModel, и получается, что я не могу воспользоваться методами beginInsertRows()/endInsertRow(). Что делать? Сваливать всё в один класс не хочется. Как разрулить такую ситуацию? Название: Re: А beginInsertRows() оказывается protected... Отправлено: Пантер от Октябрь 27, 2010, 13:25 Может ступлю, но что если в TreeModel определить в protected виртуальную функцию beginInsertRows?
Название: Re: А beginInsertRows() оказывается protected... Отправлено: Авварон от Октябрь 27, 2010, 13:35 Ололол? protected видны во всех наследниках.
Название: Re: А beginInsertRows() оказывается protected... Отправлено: Пантер от Октябрь 27, 2010, 13:39 Точно. Ступил.
Название: Re: А beginInsertRows() оказывается protected... Отправлено: xintrea от Октябрь 27, 2010, 13:46 Ололол? protected видны во всех наследниках. Все, понял свою ошибку. Я напрямую вызывал beginInsertRows() для объекта класса KnowTreeModel. Естественно, такое дело не скомпилируется. |