Название: переход с виджетов на QML Отправлено: Qyrychen от Январь 21, 2016, 13:06 Добрый день.
Подскажите пожалуйста. Мы разрабатываем некий продукт. Он умеет заполнять модель данными и отображать их в виде таблицы (QTableView). Также реализована возможность фильтрации элементов таблицы (с использованием QSortFilterProxyModel). Кроме того есть возможность поиска с подсветкой найденного текста и переходом между найденными элементами (используем QSyntaxHighlighter). Количество элементов в модели более 70000. Для расширения возможностей продукта мы хотим начать использовать QML. При поиске решений для переноса нашего функционала на QML столкнулись со следующими проблемами: 1. Фильтрация элементов модели на стороне QML (при помощи добавления записей модели в группы внутри DelegateModel при изменении условия фильтрации) показала себя неэффективной со стороны производительности. Можно ли осуществлять фильтрование как-то иначе кроме как с использованием плюсовой QSOrtFilterProxyModel? 2. Есть ли в QML готовая позможность как-то подсвечивать совпадения поисковых выражений и перемещаться по ним? Искали ответы в сети и среди примеров доступных в QtCreator, но ничего такого не обнаружили. Название: Re: переход с виджетов на QML Отправлено: gil9red от Январь 21, 2016, 13:14 Можно же модель хранить и фильтровать в с++, а отображать в QML
Пример: https://github.com/gil9red/ListFiles в main.cpp передается ссылка/указатель на модель, и в qml просто вызываются слоты с++ класса Название: Re: переход с виджетов на QML Отправлено: Qyrychen от Январь 21, 2016, 14:02 Можно же модель хранить и фильтровать в с++, а отображать в QML Пример: https://github.com/gil9red/ListFiles в main.cpp передается ссылка/указатель на модель, и в qml просто вызываются слоты с++ класса да, спасибо большое за ответ! этот момент известен. хотелось уточнить о возможности фильтровать прямо в QML при помощи скриптов например. Адекватной возможности получается нету? Ну и остается открытым вопрос о подсветке совпадений с поисковым выражением(например если бы в представленном вами примере при вводе поискового запроса exe подсвечивались эти элементы во всех отфильтрованных элементах списка) Название: Re: переход с виджетов на QML Отправлено: navrocky от Январь 22, 2016, 15:54 да, спасибо большое за ответ! этот момент известен. хотелось уточнить о возможности фильтровать прямо в QML при помощи скриптов например. Адекватной возможности получается нету? Нет такой возможности, только в связке с C++ кодом. В QML модели довольно примитивны, кроме как для Hello World'ов они ни для чего не годятся.Ну и остается открытым вопрос о подсветке совпадений с поисковым выражением(например если бы в представленном вами примере при вводе поискового запроса exe подсвечивались эти элементы во всех отфильтрованных элементах списка) Только ручками. В модели сделать функцию, которая выдаст значение с подсветкой совпадений. Название: Re: переход с виджетов на QML Отправлено: Qyrychen от Январь 22, 2016, 17:56 да, спасибо большое за ответ! этот момент известен. хотелось уточнить о возможности фильтровать прямо в QML при помощи скриптов например. Адекватной возможности получается нету? Нет такой возможности, только в связке с C++ кодом. В QML модели довольно примитивны, кроме как для Hello World'ов они ни для чего не годятся.Ну и остается открытым вопрос о подсветке совпадений с поисковым выражением(например если бы в представленном вами примере при вводе поискового запроса exe подсвечивались эти элементы во всех отфильтрованных элементах списка) Только ручками. В модели сделать функцию, которая выдаст значение с подсветкой совпадений. Спасибо! А можно чуть побольше подробностей относительно предложенного вами метода? За счет каких методов делать подсветку? Название: Re: переход с виджетов на QML Отправлено: navrocky от Январь 23, 2016, 22:53 Ну как-то так подсветку делать:
Код
Название: Re: переход с виджетов на QML Отправлено: Qyrychen от Январь 25, 2016, 10:33 Ну как-то так подсветку делать: Код
Спасибо за ваш ответ! Да, был вариант подсвечивать html тегами цвета, но этот вариант некорректно отрабатывает при наличии в тексте других тегов... |