crossplatform.ru

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

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


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

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

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




Репутация:   17  


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

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

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

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

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.2.2010, 1:23
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(AD @ 11.2.2010, 3:45) *
Изменил поле. Теперь вместо QListView использую QTableView.
вот я ничего не понял. Какое поле, что значит теперь? Пиши конкретно, что делаешь, с какой проблемой сталкиваешься.

Цитата(AD @ 11.2.2010, 3:45) *
Как заставить при редактировании полей таблицы сохранять предыдущее значение
при редактировании ячеек таблицы, её значение всегда отображается.

Цитата(AD @ 11.2.2010, 3:45) *
функцию setModel лучше использовать в конструкторе, а не при каждом измении количества записей. А как тогда заставить поле обновиться?
совсем не понял.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 11.2.2010, 12:03
Сообщение #3


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

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

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




Репутация:   17  


Цитата(Litkevich Yuriy @ 11.2.2010, 1:23) *
вот я ничего не понял. Какое поле, что значит теперь? Пиши конкретно, что делаешь, с какой проблемой сталкиваешься.

Был виджет QListView, теперь я взял виджет QTableView, чтобы видеть несколько колонок информации, а не одну колонку.

Цитата(Litkevich Yuriy @ 11.2.2010, 1:23) *
при редактировании ячеек таблицы, её значение всегда отображается.

Не знаю... У меня почему-то не отображается. Чуть позже скрин пришлю.

Цитата(Litkevich Yuriy @ 11.2.2010, 1:23) *
совсем не понял.

Если вызывать функцию setModel в конструкторе, а не в том месте где у меня происходит заполнение списка, из которого берутся данные для модели, то отображение этих данных не происходит.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 11.2.2010, 15:46
Сообщение #4


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

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

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




Репутация:   17  


Буду благодарен за помощь!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 11.2.2010, 17:58
Сообщение #5


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

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

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




Репутация:   17  


Цитата
при редактировании ячеек таблицы, её значение всегда отображается.

Вот скриншот при редактировании. Где красная черточка, там стоит курсор.
[attachment=944:edit.JPG]
Как это поправить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 11.2.2010, 18:46
Сообщение #6


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

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

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




Репутация:   44  


А что возвращает модель на роль Qt::EditRole? Думаю она эту роль просто не обрабатывает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 11.2.2010, 18:55
Сообщение #7


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

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

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




Репутация:   17  


Цитата(BRE @ 11.2.2010, 18:46) *
А что возвращает модель на роль Qt::EditRole? Думаю она эту роль просто не обрабатывает.

А примерно как можно обработать эту роль? Есть совсем маленький набросок? Или же это нетривиально?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 11.2.2010, 18:56
Сообщение #8


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

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

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




Репутация:   44  


Вернуть само число.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 11.2.2010, 19:17
Сообщение #9


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

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

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




Репутация:   17  


/// Возвращает данные о карте в зависимости от индекса и роли
QVariant ChartsListModel::data(const QModelIndex& index, int role) const
{
    if(!index.isValid() || role != Qt::DisplayRole || _p_entity_list -> isEmpty())
        return QVariant();

    QVariant result;
    MapEntity& chart((*_p_entity_list)[index.row()]);
    if(role == Qt::DisplayRole)
    {
        switch(index.column())
        {
        case 0:
            result.setValue(QFileInfo(chart.name()).fileName());
        break;
        case 1:
            result.setValue(QString::number(chart.header().C0, 'f', 0));
        break;
        }
    }
    else
    {
        /*switch(index.column())
        {
        case 0:
            result.setValue(QFileInfo(chart.name()).fileName());
        break;
        case 1:
            result.setValue(QString::number(chart.header().C0, 'f', 0));
        break;
        }*/
    }

    return result;
}

Если код для редактирования будет совпадать с кодом роли Qt::DisplayRole, то тогда мне вообще возвращается таблица с тем количеством записей, что я выбрал, но все поля пустые. Как бы это поправить? _p_entity_list - указатель на список, откуда выбираю значения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 11.2.2010, 19:27
Сообщение #10


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

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

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




Репутация:   44  


А так попробуй:
QVariant ChartsListModel::data(const QModelIndex& index, int role) const
{
    if(!index.isValid() || role != Qt::DisplayRole || _p_entity_list -> isEmpty())
        return QVariant();

    QVariant result;
    MapEntity& chart((*_p_entity_list)[index.row()]);
    if(role == Qt::DisplayRole || role == Qt::EditRole)
    {
        switch(index.column())
        {
        case 0:
            result.setValue(QFileInfo(chart.name()).fileName());
        break;
        case 1:
            result.setValue(QString::number(chart.header().C0, 'f', 0));
        break;
        }
    }
    return result;
}


Цитата
Если код для редактирования будет совпадать с кодом роли Qt::DisplayRole, то тогда мне вообще возвращается таблица с тем количеством записей, что я выбрал, но все поля пустые.

Как-то я не соображу про это... ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 20.4.2024, 0:06