Обновить 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
) и делегаты должны быть спроектированы так, чтобы они реагировали на изменения этого параметра, показывая все, что вы хотите.