从另一个

时间:2015-06-26 08:55:45

标签: qt qml qtquick2 qabstractlistmodel

我正在制作一个纸牌游戏,它有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中。当人们将鼠标悬停在某个区域的卡片上时,应使用图像突出显示其他区域中的卡片,直到鼠标保留在卡片上。

任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:0)

请告诉我它是否符合您的要求。

回复评论,刚醒来,对不起。 : - )

您的视图中的代表可以使用MouseArea覆盖。 卡片悬停后,您可以设置一个内部参数,可以在delegate内访问,该参数反映了已装备卡片的状态(悬停/未悬停)。 代表本身将对该参数的更改作出反应,以便配备悬停的卡的每张其他卡也会做出反应。

在其他方面,悬停应该更改一些导出的参数(这可以通过MouseArea来实现),并且应该设计委托,以便它们对该参数的变化做出反应,以显示您想要的任何内容。

相关问题