Название: добавление данных в CustomTableModel Отправлено: korel от Мая 18, 2010, 11:06 Суть того, что делаю: есть файл до млн. строк, нужно его считать и записать данные в таблицу, а потом по этим данным рисовать графики. По скольку мне нужны QCheckBoxы в хедерах использую QTableView.
При считывании данных с файла - отправляю QStringList в MainWindow см. код. В общем возникла проблема: при создании своей модели таблицы я переопределил все, на сколько я разобрался в том, что нужно переопределить, методы. Добавляю с помощью setData() данные в модель, но они не добавляются insertColumns() возвращает false. Я тут, было, подумывал пробежаться по файлу(определить количество строк и столбцов), а потом, в методах rowCount() и columnCount() возвращать эти значения. Может быть есть смысловые ошибки - но я пока их определить не могу. Буду благодарен за дельные советы. Код: class CustomTableModel : public QAbstractTableModel Название: Re: добавление данных в CustomTableModel Отправлено: Авварон от Мая 18, 2010, 14:03 вы бы значение бы возвращали из функций
если вам нужно отображать тот список, то insertRows вообще не нужен а вот flags не помешали бы зачем делать инсерт колонок (к-ый даже не реализован, неясно) если вы хотите добавить строку в таблицу, то а) надо изменить данные (то есть fileDataList) б) уведомить об этом модель и вьюху (с помощью методов beginInsertRows/endInsertRows). Первого у вас вообще нет. Если в пустую делать пункт б (ваш метод insertRows, то после вызова endInsertRows модель проверяет свое состояние - то что метод rowCount() вернет значение "было + сколько строк добавили", а у вас оно не изменилось ("было"), модель об этом в консоль должна ругаться) Возможно будет достаточно в методе insertRows сделать вставку пустой строки в fileDataList. А по хорошему, надо делать отдельный метод добавления целой строки (и не использовать для этого setData) Название: Re: добавление данных в CustomTableModel Отправлено: crossly от Мая 18, 2010, 14:27 Цитировать Добавляю с помощью setData() данные в модель, но они не добавляются insertColumns() возвращает false. так он у вас не реализован... метод базового класса ничего не делает.... только возвращает falseНазвание: Re: добавление данных в CustomTableModel Отправлено: korel от Мая 18, 2010, 14:49 вы бы значение бы возвращали из функций если вам нужно отображать тот список, то insertRows вообще не нужен а вот flags не помешали бы зачем делать инсерт колонок (к-ый даже не реализован, неясно) если вы хотите добавить строку в таблицу, то а) надо изменить данные (то есть fileDataList) б) уведомить об этом модель и вьюху (с помощью методов beginInsertRows/endInsertRows). Первого у вас вообще нет. Если в пустую делать пункт б (ваш метод insertRows, то после вызова endInsertRows модель проверяет свое состояние - то что метод rowCount() вернет значение "было + сколько строк добавили", а у вас оно не изменилось ("было"), модель об этом в консоль должна ругаться) Возможно будет достаточно в методе insertRows сделать вставку пустой строки в fileDataList. А по хорошему, надо делать отдельный метод добавления целой строки (и не использовать для этого setData) т.е насколько я понял мне дня того, чтобы добавить данные в модель нужно создать метод например insertToModel(QStringList&). В нем добавляю данные в fileDataList, после чего вызываю beginInsertRows() и endInsertRows(). Название: Re: добавление данных в CustomTableModel Отправлено: crossly от Мая 18, 2010, 14:53 для этого есть стандартный метод insetRows.... вам нужно переопределить именно его... все прекрасно описано в документации по MVC...
Название: Re: добавление данных в CustomTableModel Отправлено: Авварон от Мая 18, 2010, 15:02 не после а до и после (для того они бегин и энд)
Название: Re: добавление данных в CustomTableModel Отправлено: korel от Мая 18, 2010, 15:13 не после а до и после (для того они бегин и энд) Сейчас попробую все это дело написать. Отпишусь сразу как что то получится(или не получится))) ) Название: Re: добавление данных в CustomTableModel Отправлено: korel от Мая 18, 2010, 15:20 для этого есть стандартный метод insetRows.... вам нужно переопределить именно его... все прекрасно описано в документации по MVC... Спасибо за советы. Сейчас все попробую на практике испытать.Название: Re: добавление данных в CustomTableModel Отправлено: korel от Мая 18, 2010, 16:50 Спасибо, все получилось)
|