crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Как добавить обновление списка в QСompleter при обновлении модели-наследника QStringListModel
Алексей
  опции профиля:
сообщение 19.9.2010, 18:39
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 37
Регистрация: 29.8.2010
Пользователь №: 1988

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




Репутация:   0  


в модели- наследнике QStringListModel добавление строки происходит следующим образом (добавление действительно происходит - проверял):
Раскрывающийся текст
//Функция возвращает индекс указанного тэга, если запрошенного тега нет, она его добавляет в модель
int TagsListModel::indexOf(QString tag)
{
    QStringList list = stringList();
    int retval = list.indexOf(tag);
    if(retval == -1)
    {
        retval = list.count();

        beginInsertRows(QModelIndex(), retval, retval);
        list.append(tag);
        setStringList(list);
        endInsertRows();
    }
    return retval;
}

проблема в том, что при добавлении элементов в модель QСompleter, которому я задал эту модель через конструктор в качестве источника
QCompleter *completer = new QCompleter(tModel, this);
не обновляет список свой список.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 19.9.2010, 21:50
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

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




Репутация:   2  


Цитата
The Completion Model

completionModel() return a list model that contains all possible completions for the current completion prefix, in the order in which they appear in the model. This model can be used to display the current completions in a custom view. Calling setCompletionPrefix() automatically refreshes the completion model.


Может это поможет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей
  опции профиля:
сообщение 20.9.2010, 17:05
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 37
Регистрация: 29.8.2010
Пользователь №: 1988

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




Репутация:   0  


Цитата(kibsoft @ 20.9.2010, 0:50) *
Цитата
The Completion Model

completionModel() return a list model that contains all possible completions for the current completion prefix, in the order in which they appear in the model. This model can be used to display the current completions in a custom view. Calling setCompletionPrefix() automatically refreshes the completion model.


Может это поможет.

Не помогло

completion model - это прокси модель работающая фильтром для объектов модели, которую мне необходимо обновить

всё разобрался нужно было через insertRows ( int row, int count, const QModelIndex & parent = QModelIndex() ) добавлять, просто в наследнике QAbstractItemModel система, которую использовал работала, а в QStringListModel - нет.

рабочий вариант
int TagsListModel::indexOf(QString tag)
{
    QStringList list = stringList();
    int retval = list.indexOf(tag);
    if(retval == -1)
    {
        retval = list.count();

        list.append(tag);
        setStringList(list);
        insertRows(retval, 1);
    }
    return retval;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей
  опции профиля:
сообщение 3.10.2010, 12:35
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 37
Регистрация: 29.8.2010
Пользователь №: 1988

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




Репутация:   0  


оба варианта оказались рабочими, всё дело было в том, что комплетер работает со строками в юникоде
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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