crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Возможность редактирования модели и корректное обновление
AD
  опции профиля:
сообщение 11.2.2010, 0:45
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Изменил поле. Теперь вместо QListView использую QTableView.

Вопросы следующие:

- необходимо возможность редактировать поля. Как заставить при редактировании полей таблицы сохранять предыдущее значение, а не пустое поле редактировать?

- функцию setModel лучше использовать в конструкторе, а не при каждом измении количества записей. А как тогда заставить поле обновиться?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
BRE
  опции профиля:
сообщение 12.2.2010, 16:03
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


AD, посмотри на реализацию класса QStringListModel. Моделька маленькая, все очень просто сделано, все понятно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 12.2.2010, 16:28
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Спасибо большущее. Помогло.

Ну для остальных приведу немного кода. Основное отличие то, что в моей модели, в отличие от модели QStringListModel, нет своего хранилища данных, а идет обновление из внешнего хранилища.

Вот код:
class ChartsListModel: public QAbstractTableModel
{
    Q_OBJECT

/* указатель на внешнее хранилище, список заголовков*/

public:
    ChartsListModel(QObject *parent, EntityList* p_list);
    virtual ~ChartsListModel();
    virtual Qt::ItemFlags flags(const QModelIndex &index) const
    { return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable; }
    virtual int rowCount(const QModelIndex& parent = QModelIndex()) const { return 100 /*Заглушка - на самом деле, количество строк в таблице*/; }
    virtual int columnCount(const QModelIndex& parent = QModelIndex()) const { return 3 /*Еще одна заглушка - написано реальное количество колонок*/; }
    virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
    virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
    virtual bool insertRows(int row, int count, const QModelIndex& parent = QModelIndex());
    void update() { reset(); }
};



/// Вставка строк в таблицу при обновлении
bool ChartsListModel::insertRows(int row, int count, const QModelIndex& parent)
{
    Q_UNUSED(parent);
    if(count < 1 || row < 0 || row > rowCount(parent))
        return false;

    beginInsertRows(QModelIndex(), row, row + count - 1);
    endInsertRows();

    return true;
}



В коде добавления данных вызываю update(), а в сущности, reset()
/// Слот добавления выделенных карт
void T::addToList()
{
           /* код заполнения списка с картами */
          model -> update();
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- AD   Возможность редактирования модели и корректное обновление   11.2.2010, 0:45
- - Litkevich Yuriy   Цитата(AD @ 11.2.2010, 3:45) Изменил поле...   11.2.2010, 1:23
|- - AD   Цитата(Litkevich Yuriy @ 11.2.2010, 1:23)...   11.2.2010, 12:03
||- - AD   Буду благодарен за помощь!   11.2.2010, 15:46
|- - AD   Цитатапри редактировании ячеек таблицы, её значени...   11.2.2010, 17:58
- - BRE   А что возвращает модель на роль Qt::EditRole? Дума...   11.2.2010, 18:46
|- - AD   Цитата(BRE @ 11.2.2010, 18:46) А что возв...   11.2.2010, 18:55
- - BRE   Вернуть само число.   11.2.2010, 18:56
|- - AD   /// Возвращает данные о карте в зависимости от инд...   11.2.2010, 19:17
|- - BRE   А так попробуй: QVariant ChartsListModel:...   11.2.2010, 19:27
|- - AD   Ну я так и попробовал. Возвращается пустая табличк...   11.2.2010, 21:59
- - BRE   QVariant ChartsListModel::data(const Q...   11.2.2010, 22:08
|- - AD   Цитата(BRE @ 11.2.2010, 22:08) А лучше во...   12.2.2010, 11:45
|- - BRE   Цитата(AD @ 12.2.2010, 11:45) Нет в этот ...   12.2.2010, 11:50
|- - AD   На счет обновления данных в таблицах пока вопрос о...   12.2.2010, 13:22
- - Litkevich Yuriy   Цитата(AD @ 12.2.2010, 16:22) Как сделать...   12.2.2010, 13:27
|- - AD   Карта в терминах модели является строкой.   12.2.2010, 13:38
- - Litkevich Yuriy   Тогда почитай внимательно Изменение размеров модел...   12.2.2010, 13:57
|- - AD   Юра, спасибо. Один маааленький вопросик остался. М...   12.2.2010, 15:46
- - BRE   AD, посмотри на реализацию класса QStringListModel...   12.2.2010, 16:03
|- - AD   Спасибо большущее. Помогло. Ну для остальных прив...   12.2.2010, 16:28
- - Litkevich Yuriy   Цитата(AD @ 12.2.2010, 19:28) { return 10...   12.2.2010, 16:50
|- - AD   Я не очень понял твою мысль, Юра. Я вставил эти чи...   12.2.2010, 17:04
- - Litkevich Yuriy   Цитата(AD @ 12.2.2010, 20:04) Я вставил э...   12.2.2010, 17:17


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


13 чел. читают эту тему (гостей: 13, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.1.2025, 11:02