#pragma once #include #include #include #include #include #include #include #include #include #include "debug.h" class ChooseFriendDialog; //////////////////////////////////////////////// /// 选择好友窗口中的一个 元素/好友项 //////////////////////////////////////////////// class ChooseFriendItem : public QWidget { Q_OBJECT public: ChooseFriendItem(ChooseFriendDialog* owner, const QString& userId, const QIcon& avatar, const QString& name, bool checked); void paintEvent(QPaintEvent* event) override; void enterEvent(QEnterEvent* event) override; void leaveEvent(QEvent* event) override; QString& getUserId() { return userId; } QCheckBox* getCheckBox() { return checkBox; } private: bool isHover = false; QCheckBox* checkBox; QPushButton* avatarBtn; QLabel* nameLabel; ChooseFriendDialog* owner; //记录了哪个QWidget持有这个Item,此处应该是ChooseFriendDialog QString userId; //记录成员id用于删除唯一指定的成员Item }; class ChooseFriendDialog : public QDialog { Q_OBJECT public: ChooseFriendDialog(QWidget *parent, const QString& userId); void initLeft(QHBoxLayout* layout); void initRight(QHBoxLayout* layout); void initData(); void addFriend(const QString& userId, const QIcon& avatar, const QString& name, bool checked); void addSelectedFriend(const QString& userId, const QIcon& avatar, const QString& name); void deleteSelectedFriend(const QString& userId); void clickOkBtn(); QList generateMemberList(); private: QWidget* totalContainer; QWidget* selectedContainer; //当前选择窗口是点击哪个用户弹出的 QString userId; };