我正在制作一个纸牌游戏,它有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的角色。让我用区域(如zone1,zone2等)表示每个ListView
。在游戏中,卡可以在其他区域配备其他卡。卡上配备的卡存储在QSet<> equipped
中,装有卡的卡存储在equipTarget
中。当人们将鼠标悬停在某个区域的卡片上时,应使用图像突出显示其他区域中的卡片,直到鼠标保留在卡片上。
任何想法都表示赞赏。
答案 0 :(得分:0)
请告诉我它是否符合您的要求。
回复评论,刚醒来,对不起。 : - )
您的视图中的代表可以使用MouseArea
覆盖。
卡片悬停后,您可以设置一个内部参数,可以在delegate
内访问,该参数反映了已装备卡片的状态(悬停/未悬停)。
代表本身将对该参数的更改作出反应,以便配备悬停的卡的每张其他卡也会做出反应。
在其他方面,悬停应该更改一些导出的参数(这可以通过MouseArea
来实现),并且应该设计委托,以便它们对该参数的变化做出反应,以显示您想要的任何内容。