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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Список одинаковых данных для заполнения модели  (Прочитано 8479 раз)
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« : Февраль 21, 2023, 20:19 »

Всем привет.
Имеется обьект поиска, когда ввожу данные то от сервера приходят строки которые подпадают под шаблон поиска.
И ниже есть Rectangle, и я бы хотел под строки создавать кастомные обьекты и заполнять его. Само собою нужно динамически добавлять и удалять обьекты.
Мог бы кто посоветовать вариант заполнения? Есть вариант создавать под строки класс от QAbstractListModel и уже его кидать в QML.
Но может есть другой вариант? Просто совет нужен.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Февраль 21, 2023, 21:45 »

модели есть и прямо в QML: https://doc.qt.io/qt-5/qtquick-modelviewsdata-modelview.html#qml-data-models
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #2 : Март 02, 2023, 19:09 »

Спасибо за совет.
Сейчас это прорабатываю.
Не могли бы посоветовать как можно обратиться к id или данным выбранного делегата?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Март 02, 2023, 21:45 »

так данные же из модели должны исходить...

минимальный код с описанием задачи / желаемым поведением бы не помешал.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #4 : Март 05, 2023, 21:30 »

минимальный код с описанием задачи / желаемым поведением бы не помешал.

Вот часть qml
Код:
Item
{
    id: root

    property var  model
    property string name

    Component
    {
        id: myDelegate

        Rectangle
        {
            id: delegateRect

            color: "yellow"

            height: 15
            width: iWidthDelegate

            property var indexRow: model.index

            Text
            {
                id: name
                text: root.model.getData(indexRow, 0)

                anchors.fill: parent
                anchors.leftMargin: 10
                anchors.rightMargin: 10
                font.pixelSize: 14

                verticalAlignment: Text.AlignTop
            }

            MouseArea {
                anchors.fill: parent
                acceptedButtons: Qt.RightButton | Qt.LeftButton
                onClicked: {
                    if (mouse.button === Qt.RightButton)
                        contextMenus.popup()
                }

                Menu {
                    id: contextMenus
                    MenuItem { text: "add to list friends"; onClicked: {eventHandler.addToFriendList("Name Of User") } }
                    MenuItem { text: "save " }
                    MenuItem { text: "else..." }
                }
            }

        }
    }

    ListView
    {
        id: listView
        anchors.fill: parent
        model: foundModel
        delegate: myDelegate

        spacing: 5

        highlight: Rectangle { color: "lightsteelblue"; radius: 5 }
        focus: true
    }
}

В данном коде model это модель что я получаю от сервера, список имен юзеров. Делегат тут является обьект для каждого имени. И вот если я выбираю одно из имени и наживаю в меню добавить, то выбранное имя отправляю на сервер и я добавляю его с другими данными в таблицу базы. eventHandler.addToFriendList это слот который и должен аргументом принять имя из делегата. Примерно такой принцип работы. Если вы считаете что моя реализация не правильная то приму совет.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Март 06, 2023, 10:20 »

судя по названию foundModel, QSortFilterProxyModel тут подойдет идеально. делегат, достающий данные сам — это как-то идеологически неверно, ведь его задача лишь отображать те данные, которые ему поданы (обычно используются required property). да и MouseArea должна сидеть в ListView, а не в делегате, примерно по тем же причинам.

или я плохо понимаю что означает
Цитировать
В данном коде model это модель что я получаю от сервера, список имен юзеров. Делегат тут является обьект для каждого имени. И вот если я выбираю одно из имени
по этому описанию никакого поиска/фильтра не выполняется. или у тебя просто есть опциональная возможность искать по принятому с сервера списку? ведь по коду делегат используется именно для foundModel.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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