Обновить ListView от другого

Я делаю карточную игру, которая имеет 4 слота для карт вместимостью 5 каждый. я использую ListView представлять каждый слот. Позвольте мне сначала объяснить код, а затем мою проблему.

class ClientCard : public QObject
{
    Q_OBJECT
    int code;       // card code
    int location;   // zone in which card is located
    ...
    ClientCard* equipTarget;
    QSet<ClientCard*> equipped;
    ...
};

class ClientCardModel : public QAbstractListModel 
{
    enum CardRoles {
        CodeRole = Qt::UserRole + 1, 
        LocationRole
        }
    ...
    QList<ClientCard*> m_list;
};

ClientCardModel имеет список ClientCard за ListView и роли для передачи кода и другого члена в QML. Позвольте мне представлять каждого ListView с зоной (например, зона1, зона2 и т. д.). В игре карта может быть оснащена другими картами в других зонах. Карты, размещенные на карте, хранятся в QSet<> equipped и карта, снабжающая карту, хранится в equipTarget, При наведении курсора на карту в зоне карты, оснащающие ее в других зонах, должны выделяться изображением, пока мышь не останется на карте.

Любая идея приветствуется.

1 ответ

Дайте мне знать, если это соответствует вашим требованиям.

Ответ рассмотрен, только что проснулся, извините.:-)

Вы можете иметь делегатов на ваш взгляд покрыты MouseArea, Как только карта наведена, вы можете установить внутренний параметр, доступный из delegate это отражает состояние оборудованной карты (навесной / не наведенный). Сам делегат будет реагировать на изменение этого параметра, так что каждая другая карта, оснащающая находящуюся, будет также реагировать.

В других терминах зависание должно изменить некоторый экспортируемый параметр (это может быть достигнуто с помощью MouseArea) и делегаты должны быть спроектированы так, чтобы они реагировали на изменения этого параметра, показывая все, что вы хотите.

Другие вопросы по тегам