Russian Qt Forum
Ноябрь 01, 2024, 06:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Update фильтра для промежуточной модели.  (Прочитано 2579 раз)
yashaka
Гость
« : Февраль 03, 2010, 12:24 »

Есть такой пример использования промежуточной модели в книге Макса Шлее:
Код:
#include <QtGui>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget wgt;

    QStringListModel model;
    model.setStringList(QStringList() << "Xandria"
                        << "Epica"
                        << "Therion"
                        << "Evanescence"
                        << "Nightwish");

    QSortFilterProxyModel proxyModel;
    proxyModel.setSourceModel(&model);
    proxyModel.setFilterWildcard("E*");

    QListView *listView1 = new QListView;
    listView1->setModel(&model);

    QListView *listView2 = new QListView;
    listView2->setModel(&proxyModel);

    //Layout setup
    QHBoxLayout *hbxLayout = new QHBoxLayout;
    hbxLayout->addWidget(listView1);
    hbxLayout->addWidget(listView2);
    wgt.setLayout(hbxLayout);

    wgt.show();

    return app.exec();
}
Так вот, вопрос такой: как обновить фильтрацию даных для listView2, когда в listView1 что-то было отредактировано? Так как сейчас, если даные отредактировать в представлении listView1 то они обновляться и в представлении listView2, но фильтр не переприменяеться...
Сразу возникла идея соединить какой то сигнал для model со слотом для proxyModel, но подходящих не нашел...
Записан
Kolobok
Гость
« Ответ #1 : Февраль 03, 2010, 16:52 »

Еще раз вызвать setFilter...
Такое поведение может поствить пользователя в тупик, если он отредактирует строку и она исчезнет.
Записан
yashaka
Гость
« Ответ #2 : Февраль 04, 2010, 10:08 »

Да, действительно:)
Теперь ясно почему напрямую через существующие сигналы-слоты такой возможности нет...
Выходит, и правда, лучше создать кнопку "обновления", и по сигналу clicked вызывать setFilter.
Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 21.