0

我正在制作一个纸牌游戏,它有 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具有将代码和其他成员传输到 QML的ClientCardfor和角色列表。ListView让我ListView用一个区域(如 zone1、zone2 等)来表示每个。在游戏中,一张卡可以与其他区域的其他卡一起装备。卡上装备的卡存放在 中QSet<> equipped,卡上装备的卡存放在 中equipTarget。当将鼠标悬停在区域中的卡片上时,应使用图像突出显示其他区域中装备它的卡片,直到鼠标停留在卡片上。

任何想法都值得赞赏。

4

1 回答 1

0

让我知道它是否符合您的要求。

回复已审核,刚睡醒,不好意思。:-)

您可以在视图中使用MouseArea. 卡片悬停后,您可以设置可从内部访问的内部参数,该参数delegate反映已装备卡片的状态(悬停/未悬停)。代表本身将对参数的变化做出反应,因此装备悬停的卡的其他卡也会做出反应。

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

于 2015-06-27T09:43:27.227 回答