Files
MyChat_Client/userinfowidget.cpp
2025-05-30 19:49:58 +08:00

122 lines
4.1 KiB
C++

#include "userinfowidget.h"
UserInfoWidget::UserInfoWidget(const UserInfo& userInfo, QWidget *parent)
:userInfo(userInfo),
QDialog(parent)
{
// 设置基本的属性
this->setFixedSize(400, 200);
this->setWindowTitle("用户详情");
this->setWindowIcon(QIcon(":/resource/image/logo.png"));
this->setAttribute(Qt::WA_DeleteOnClose);
this->move(QCursor::pos());
// 创建布局管理器
QGridLayout* layout = new QGridLayout();
layout->setVerticalSpacing(10);
layout->setHorizontalSpacing(20);
layout->setContentsMargins(50, 20, 0, 0);
layout->setAlignment(Qt::AlignTop);
this->setLayout(layout);
// 添加头像
avatarBtn = new QPushButton();
avatarBtn->setFixedSize(75, 75);
avatarBtn->setIconSize(QSize(75, 75));
avatarBtn->setIcon(userInfo.avatar);
QString labelStyle = "QLabel { font-weight: 800; padding-left: 20px;}";
QString btnStyle = "QPushButton { border: 1px solid rgb(100, 100, 100); border-radius: 5px; background-color: rgb(240, 240, 240); color: rgb(0, 0, 0); }";
btnStyle += "QPushButton:pressed { background-color: rgb(205, 205, 205); }";
int width = 80;
int height = 30;
// 添加用户序号
idTag = new QLabel();
idTag->setText("序号");
idTag->setStyleSheet(labelStyle);
idTag->setFixedSize(width, height);
idTag->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
idLabel = new QLabel();
idLabel->setText(userInfo.userId);
idLabel->setFixedSize(width, height);
idLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
// 添加用户昵称
nameTag = new QLabel();
nameTag->setText("昵称");
nameTag->setStyleSheet(labelStyle);
nameTag->setFixedSize(width, height);
nameTag->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
nameLabel = new QLabel();
nameLabel->setText(userInfo.nickname);
nameLabel->setFixedSize(width, height);
nameLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
// 设置电话
phoneTag = new QLabel();
phoneTag->setText("电话");
phoneTag->setStyleSheet(labelStyle);
phoneTag->setFixedSize(width, height);
phoneTag->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
phoneLabel = new QLabel();
phoneLabel->setText(userInfo.phone);
phoneLabel->setFixedSize(width, height);
phoneLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
// 添加功能按钮
applyBtn = new QPushButton();
applyBtn->setText("申请好友");
applyBtn->setFixedSize(80, 30);
applyBtn->setStyleSheet(btnStyle);
applyBtn->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
sendMessageBtn = new QPushButton();
sendMessageBtn->setText("发送消息");
sendMessageBtn->setFixedSize(80, 30);
sendMessageBtn->setStyleSheet(btnStyle);
sendMessageBtn->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
deleteFriendBtn = new QPushButton();
deleteFriendBtn->setText("删除好友");
deleteFriendBtn->setFixedSize(80, 30);
deleteFriendBtn->setStyleSheet(btnStyle);
deleteFriendBtn->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
// 添加上述内容到布局管理器中
layout->addWidget(avatarBtn, 0, 0, 3, 1);
layout->addWidget(idTag, 0, 1);
layout->addWidget(idLabel, 0, 2);
layout->addWidget(nameTag, 1, 1);
layout->addWidget(nameLabel, 1, 2);
layout->addWidget(phoneTag, 2, 1);
layout->addWidget(phoneLabel, 2, 2);
layout->addWidget(applyBtn, 3, 0);
layout->addWidget(sendMessageBtn, 3, 1);
layout->addWidget(deleteFriendBtn, 3, 2);
// 9. 初始化按钮的禁用关系
// 判定依据就是拿着当前用户的 userId, 在 DataCenter 的好友列表中, 查询即可.
//DataCenter* dataCenter = DataCenter::getInstance();
//auto* myFriend = dataCenter->findFriendById(this->userInfo.userId);
//if (myFriend == nullptr) {
// // 不是好友
// sendMessageBtn->setEnabled(false);
// deleteFriendBtn->setEnabled(false);
//}
//else {
// // 是好友
// applyBtn->setEnabled(false);
//}
}