#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); avatarBtn->setStyleSheet("QPushButton { border: none; background-color: transparent; }"); 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);}"; //QString btnStyle = ""; 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); /*sendMessageBtn->setObjectName("sendMessageBtn"); deleteFriendBtn->setObjectName("deleteFriendBtn");*/ sendMessageBtn->setStyleSheet("QPushButton { border: 1px solid rgb(200, 200, 200); border-radius: 5px; background-color: rgb(240, 240, 240); color: rgb(150, 150, 150); }"); deleteFriendBtn->setStyleSheet("QPushButton { border: 1px solid rgb(200, 200, 200); border-radius: 5px; background-color: rgb(240, 240, 240); color: rgb(150, 150, 150); }"); } else { // 是好友 applyBtn->setEnabled(false); applyBtn->setStyleSheet("QPushButton { border: 1px solid rgb(200, 200, 200); border-radius: 5px; background-color: rgb(240, 240, 240); color: rgb(150, 150, 150); }"); } //初始化信号槽 initSingleSlot(); } void UserInfoWidget::initSingleSlot() { connect(sendMessageBtn, &QPushButton::clicked, this, [=]() { //拿到主窗口的指针,通过主窗口,前面实现的切换到会话这样的功能,直接调用即可 MainWidget* mainWidget = MainWidget::getInstance(); mainWidget->switchSession(userInfo.userId); //把当前模态窗口关闭 this->close(); }); }