diff --git a/CMakeLists.txt b/CMakeLists.txt index 695fe12..1e30a74 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,10 @@ set(PROJECT_SOURCES messageeditarea.cpp SelfInfoWidget.h SelfInfoWidget.cpp + userinfowidget.h + userinfowidget.cpp + sessiondetailwidget.h + sessiondetailwidget.cpp ) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) @@ -51,8 +55,6 @@ endif() target_link_libraries(ClientChat PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) -# Bundle设置(略) - include(GNUInstallDirs) install(TARGETS ClientChat BUNDLE DESTINATION . diff --git a/SelfInfoWidget.cpp b/SelfInfoWidget.cpp index 1de57b1..76ed7ff 100644 --- a/SelfInfoWidget.cpp +++ b/SelfInfoWidget.cpp @@ -4,7 +4,7 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) : QDialog(parent) { //设置整个窗口的属性 - this->setFixedSize(450, 250); + this->setFixedSize(500, 200); this->setWindowTitle("个人信息"); this->setWindowIcon(QIcon(":/resource/image/logo.png")); //窗口被关闭时,自动销毁这个对话框对象 @@ -14,8 +14,10 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) //创建布局管理器 QGridLayout* layout = new QGridLayout(); - layout->setSpacing(0); - layout->setContentsMargins(0, 0, 0, 0); + //layout->setSpacing(0); + layout->setHorizontalSpacing(10); + layout->setVerticalSpacing(3); + layout->setContentsMargins(20, 20, 20, 0); layout->setAlignment(Qt::AlignTop); this->setLayout(layout); @@ -29,6 +31,7 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) QString labelStyle = "QLabel { font-size: 14px; font-weight: 800; }"; QString btnStyle = "QPushButton {border: none; background-color: transparent; }"; btnStyle += "QPushButton:pressed { background-color: rgb(210, 210, 210); }"; + QString editStyle = "QLineEdit { border: none; background-color: rgb(255 ,255, 255); border-radius: 5px; padding-left: 2px; }"; int height = 30; @@ -36,7 +39,7 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) idTag = new QLabel(); idTag->setFixedSize(50, height); idTag->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - idTag->setText("序号"); + idTag->setText("ID"); idTag->setStyleSheet(labelStyle); idLabel = new QLabel(); @@ -55,7 +58,7 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) nameLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); nameModifyBtn = new QPushButton(); - nameModifyBtn->setFixedSize(25, 25); + nameModifyBtn->setFixedSize(70, 25); nameModifyBtn->setIconSize(QSize(20, 20)); nameModifyBtn->setIcon(QIcon(":/resource/image/modify.png")); nameModifyBtn->setStyleSheet(btnStyle); @@ -63,10 +66,11 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) nameEdit = new QLineEdit(); nameEdit->setFixedHeight(height); nameEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + nameEdit->setStyleSheet(btnStyle); nameEdit->hide(); nameSubmitBtn = new QPushButton(); - nameSubmitBtn->setFixedSize(25, 25); + nameSubmitBtn->setFixedSize(70, 25); nameSubmitBtn->setIconSize(QSize(20, 20)); nameSubmitBtn->setIcon(QIcon(":/resource/image/submit.png")); nameSubmitBtn->setStyleSheet(btnStyle); @@ -84,7 +88,7 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) descLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); descModifyBtn = new QPushButton(); - descModifyBtn->setFixedSize(25, 25); + descModifyBtn->setFixedSize(70, 25); descModifyBtn->setIconSize(QSize(20, 20)); descModifyBtn->setIcon(QIcon(":/resource/image/modify.png")); descModifyBtn->setStyleSheet(btnStyle); @@ -92,12 +96,13 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) descEdit = new QLineEdit(); descEdit->setFixedHeight(height); descEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + descEdit->setStyleSheet(btnStyle); descEdit->hide(); descSubmitBtn = new QPushButton(); - descSubmitBtn->setFixedSize(25, 25); + descSubmitBtn->setFixedSize(70, 25); descSubmitBtn->setIconSize(QSize(20, 20)); - descSubmitBtn->setIcon(QIcon(":/resource/image/modify.png")); + descSubmitBtn->setIcon(QIcon(":/resource/image/submit.png")); descSubmitBtn->setStyleSheet(btnStyle); descSubmitBtn->hide(); @@ -113,7 +118,7 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) phoneLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); phoneModifyBtn = new QPushButton(); - phoneModifyBtn->setFixedSize(25, 25); + phoneModifyBtn->setFixedSize(70, 25); phoneModifyBtn->setIconSize(QSize(20, 20)); phoneModifyBtn->setIcon(QIcon(":/resource/image/modify.png")); phoneModifyBtn->setStyleSheet(btnStyle); @@ -121,10 +126,11 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) phoneEdit = new QLineEdit(); phoneEdit->setFixedHeight(height); phoneEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + phoneEdit->setStyleSheet(btnStyle); phoneEdit->hide(); phoneSubmitBtn = new QPushButton(); - phoneSubmitBtn->setFixedSize(25, 25); + phoneSubmitBtn->setFixedSize(70, 25); phoneSubmitBtn->setIconSize(QSize(20, 20)); phoneSubmitBtn->setIcon(QIcon(":/resource/image/submit.png")); phoneSubmitBtn->setStyleSheet(btnStyle); @@ -135,16 +141,26 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) verifyCodeTag = new QLabel(); verifyCodeTag->setFixedSize(50, height); verifyCodeTag->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - verifyCodeTag->setText("输入验证码:"); + verifyCodeTag->setText("验证码:"); verifyCodeTag->setStyleSheet(labelStyle); + verifyCodeTag->hide(); verifyCodeEdit = new QLineEdit(); verifyCodeEdit->setFixedHeight(height); verifyCodeEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - //verifyCodeEdit->hide(); + verifyCodeEdit->setStyleSheet(editStyle); + verifyCodeEdit->hide(); getVerifyCodeBtn = new QPushButton(); getVerifyCodeBtn->setText("获取验证码"); + getVerifyCodeBtn->setFixedSize(70, height); + getVerifyCodeBtn->setStyleSheet(R"(QPushButton { + border: none; + background-color: transparent; + color: rgb(0, 0, 0); } + QPushButton:pressed { background-color: rgb(231, 231, 231); } +)"); + getVerifyCodeBtn->hide(); layout->addWidget(avatarBtn, 0, 0, 3, 1); @@ -163,9 +179,9 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) layout->addWidget(phoneLabel, 3, 2); layout->addWidget(phoneModifyBtn, 3, 3); - layout->addWidget(verifyCodeTag, 4, 1); + /*layout->addWidget(verifyCodeTag, 4, 1); layout->addWidget(verifyCodeEdit, 4, 2); - layout->addWidget(getVerifyCodeBtn, 4, 3); + layout->addWidget(getVerifyCodeBtn, 4, 3);*/ #if TEST_UI idLabel->setText("12345"); @@ -173,4 +189,62 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent) descLabel->setText("It didn't matter that i lived another day."); phoneLabel->setText("12345678900"); #endif + + //添加连接的槽函数 + connect(nameModifyBtn, &QPushButton::clicked, this, [=]() { + //把当前的nameLabel和nameModifyBtn隐藏起来 + nameLabel->hide(); + nameModifyBtn->hide(); + layout->removeWidget(nameLabel); + layout->removeWidget(nameModifyBtn); + //把nameEdit和nameSubmitBtn显示出来 + nameEdit->show(); + nameSubmitBtn->show(); + layout->addWidget(nameEdit, 1, 2); + layout->addWidget(nameSubmitBtn, 1, 3); + //把输入框的内容进行设置 + nameEdit->setText(nameLabel->text()); + }); + + connect(descModifyBtn, &QPushButton::clicked, this, [=]() { + descLabel->hide(); + descModifyBtn->hide(); + layout->removeWidget(descLabel); + layout->removeWidget(descModifyBtn); + + descEdit->show(); + descSubmitBtn->show(); + layout->addWidget(descEdit, 2, 2); + layout->addWidget(descSubmitBtn, 2, 3); + + descEdit->setText(descLabel->text()); + }); + + connect(phoneModifyBtn, &QPushButton::clicked, this, [=]() { + phoneLabel->hide(); + phoneModifyBtn->hide(); + layout->removeWidget(phoneLabel); + layout->removeWidget(phoneModifyBtn); + + phoneEdit->show(); + phoneSubmitBtn->show(); + layout->addWidget(phoneEdit, 3, 2); + layout->addWidget(phoneSubmitBtn, 3, 3); + + verifyCodeTag->show(); + verifyCodeEdit->show(); + getVerifyCodeBtn->show(); + layout->addWidget(verifyCodeTag, 4, 1); + layout->addWidget(verifyCodeEdit, 4, 2); + layout->addWidget(getVerifyCodeBtn, 4, 3); + + phoneEdit->setText(phoneLabel->text()); + }); + + /*connect(nameSubmitBtn, &QPushButton::clicked, this, &SelfInfoWidget::clickNameSubmitBtn); + connect(descSubmitBtn, &QPushButton::clicked, this, &SelfInfoWidget::clickDescSubmitBtn); + connect(getVerifyCodeBtn, &QPushButton::clicked, this, &SelfInfoWidget::clickGetVerifyCodeBtn); + connect(phoneSubmitBtn, &QPushButton::clicked, this, &SelfInfoWidget::clickPhoneSubmitBtn); + connect(avatarBtn, &QPushButton::clicked, this, &SelfInfoWidget::clickAvatarBtn);*/ + } diff --git a/mainwidget.cpp b/mainwidget.cpp index 4d87756..4da786d 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -3,7 +3,7 @@ #include #include -#include "sessionfriendarea.h" +#include "sessiondetailwidget.h" MainWidget *MainWidget::instance = nullptr; @@ -197,7 +197,7 @@ void MainWidget::initRightWindow() hlayout->addWidget(sessionTitleLabel); - QPushButton* extraBtn = new QPushButton(); + extraBtn = new QPushButton(); extraBtn->setFixedSize(30, 30); extraBtn->setIconSize(QSize(30, 30)); extraBtn->setIcon(QIcon(":/resource/image/more.png")); @@ -232,10 +232,19 @@ void MainWidget::initSignalSlot() ///////////////////////////////////// connect(userAvatar, &QPushButton::clicked, this, [=]()->void { SelfInfoWidget* selfInfoWidget = new SelfInfoWidget(this); - selfInfoWidget->setStyleSheet("QDialog { background-color: rgb(255, 255, 255); }"); + selfInfoWidget->setStyleSheet("QDialog { background-color: rgb(245, 245, 245); }"); selfInfoWidget->exec(); //弹出模态对话框 //selfInfoWidget->show(); //弹出非模态对加框 }); + + + ///////////////////////////////////// + // 点击右上角的更多按钮,扩展会话的详细信息 + ///////////////////////////////////// + connect(extraBtn, &QPushButton::clicked, this, [=]() { + SessionDetailWidget* sessionDetailWidget = new SessionDetailWidget(this); + sessionDetailWidget->exec(); + }); } void MainWidget::switchTabToSession() diff --git a/mainwidget.h b/mainwidget.h index aba34a2..8967429 100644 --- a/mainwidget.h +++ b/mainwidget.h @@ -4,11 +4,13 @@ #include #include #include +#include #include "debug.h" #include "messageeditarea.h" #include "messageshowarea.h" #include "SelfInfoWidget.h" +#include "sessionfriendarea.h" QT_BEGIN_NAMESPACE namespace Ui { @@ -53,6 +55,9 @@ private: //添加好友按钮 QPushButton* addFriendBtn; + //显示会话详情按钮 + QPushButton* extraBtn; + //消息展示区 MessageShowArea* messageShowArea; diff --git a/messageshowarea.cpp b/messageshowarea.cpp index 0aa2853..e4adba4 100644 --- a/messageshowarea.cpp +++ b/messageshowarea.cpp @@ -1,5 +1,8 @@ #include "messageshowarea.h" +#include "mainwidget.h" +#include "userinfowidget.h" + MessageShowArea::MessageShowArea() { //初始化基本属性 this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); @@ -22,25 +25,31 @@ MessageShowArea::MessageShowArea() { // 添加测试数据 #if TEST_UI + + //测试长消息 + model::UserInfo userInfo; + userInfo.nickname = "???"; + userInfo.userId = "4862"; + userInfo.phone = "00000000000"; + userInfo.description = "A test description."; + const QString s = R"(The starry sky is just a few years ago. And the past may no longer exist,The only thing that remains is light years away, it's just an ethereal phantom.)"; + + userInfo.avatar = QIcon(":/resource/image/defaultAvatar.png"); + Message message = Message::makeMessage(model::TEXT_TYPE, "", userInfo, s.toUtf8(), ""); + this->addMessage(false, message); + bool k = true; for(int i = 0; i < 8; i++) { model::UserInfo userInfo; + userInfo.userId = QString::number(i); + userInfo.phone = "12345678900"; + userInfo.description = "A test description."; userInfo.nickname = "xyz" + QString::number(i); userInfo.avatar = QIcon(":/resource/image/defaultAvatar.png"); Message message = Message::makeMessage(model::TEXT_TYPE, "", userInfo, (QString("this is a test message...") + QString::number(i)).toUtf8(), ""); k = !k; this->addMessage(k, message); } - - //测试长消息 - model::UserInfo userInfo; - userInfo.nickname = "???"; - - const QString s = R"(The starry sky is just a few years ago. And the past may no longer exist,The only thing that remains is light years away, it's just an ethereal phantom.)"; - - userInfo.avatar = QIcon(":/resource/image/defaultAvatar.png"); - Message message = Message::makeMessage(model::TEXT_TYPE, "", userInfo, s.toUtf8(), ""); - this->addMessage(false, message); #endif } @@ -137,6 +146,14 @@ MessageItem *MessageItem::makeMessageItem(bool isLeft, const Message &message) layout->addWidget(contentWidget, 1, 0); } + //连接信号槽,处理用户点击头像的操作 + connect(avatarBtn, &QPushButton::clicked, messageItem, [=]() { + MainWidget* mainWidget = MainWidget::getInstance(); + UserInfoWidget* userInfoWidget = new UserInfoWidget(message.sender, mainWidget); + userInfoWidget->setStyleSheet("QDialog { background-color: rgb(245, 245, 245); }"); + userInfoWidget->exec(); + }); + return messageItem; } diff --git a/messageshowarea.h b/messageshowarea.h index 2f19d8c..6448ed2 100644 --- a/messageshowarea.h +++ b/messageshowarea.h @@ -11,6 +11,7 @@ #include #include + #include "model/data.h" #include "debug.h" diff --git a/sessiondetailwidget.cpp b/sessiondetailwidget.cpp new file mode 100644 index 0000000..06b25e5 --- /dev/null +++ b/sessiondetailwidget.cpp @@ -0,0 +1,97 @@ +#include "sessiondetailwidget.h" + + +//右上角详情的会话人员列表 +AvatarItem::AvatarItem(const QIcon& avatar, const QString& name) +{ + // 设置自身的基本属性 + this->setFixedSize(70, 80); + + // 创建布局管理器 + QVBoxLayout* layout = new QVBoxLayout(); + layout->setSpacing(0); + layout->setContentsMargins(0, 0, 0, 0); + layout->setAlignment(Qt::AlignHCenter); + this->setLayout(layout); + + // 创建头像 + avatarBtn = new QPushButton(); + avatarBtn->setFixedSize(45, 45); + avatarBtn->setIconSize(QSize(45, 45)); + avatarBtn->setIcon(avatar); + avatarBtn->setStyleSheet("QPushButton { border: none; }"); + + // 创建名字 + nameLabel = new QLabel(); + nameLabel->setText(name); + QFont font("微软雅黑", 12); + nameLabel->setFont(font); + nameLabel->setAlignment(Qt::AlignCenter); + + // 对名字做 "截断操作" + const int MAX_WIDTH = 65; + QFontMetrics metrics(font); + int totalWidth = metrics.horizontalAdvance(name);//测量水平的宽度 + if (totalWidth >= MAX_WIDTH) { + // 说明需要截断 + QString tail = "..."; + int tailWidth = metrics.horizontalAdvance(tail); + int availableWidth = MAX_WIDTH - tailWidth; + int availableSize = name.size() * ((double)availableWidth / totalWidth); + QString newName = name.left(availableSize); + nameLabel->setText(newName + tail); + } + + // 添加 + layout->addWidget(avatarBtn); + layout->addWidget(nameLabel); + +} + +SessionDetailWidget::SessionDetailWidget(QWidget *parent) + //:userInfo(userInfo), + : QDialog(parent) +{ + // 1. 设置基本属性 + this->setWindowTitle("会话详情"); + this->setWindowIcon(QIcon(":/resource/image/logo.png")); + this->setFixedSize(300, 300); + this->setStyleSheet("QWidget { background-color: rgb(255, 255, 255); }"); + this->setAttribute(Qt::WA_DeleteOnClose); + + // 2. 创建布局管理器 + QGridLayout* layout = new QGridLayout(); + layout->setSpacing(10); + layout->setContentsMargins(50, 0, 50, 0); + this->setLayout(layout); + + // 3. 添加 "创建群聊" 按钮 + AvatarItem* createGroupBtn = new AvatarItem(QIcon(":/resource/image/cross.png"), "添加"); + layout->addWidget(createGroupBtn, 0, 0); + + // 4. 添加当前用户的信息 (临时构造的假数据) +#if TEST_UI + AvatarItem* currentUser = new AvatarItem(QIcon(":/resource/image/defaultAvatar.png"), "张三123456"); + layout->addWidget(currentUser, 0, 1); +#endif + //AvatarItem* currentUser = new AvatarItem(userInfo.avatar, userInfo.nickname); + //layout->addWidget(currentUser, 0, 1); + + // 5. 添加 "删除好友" 按钮 + deleteFriendBtn = new QPushButton(); + deleteFriendBtn->setFixedHeight(50); + deleteFriendBtn->setText("删除好友"); + QString style = "QPushButton { border: 1px solid rgb(90, 90, 90); border-radius: 5px; color: rgb(0, 0, 0); } "; + style += "QPushButton:pressed { background-color: rgb(235, 235, 235); }"; + deleteFriendBtn->setStyleSheet(style); + layout->addWidget(deleteFriendBtn, 1, 0, 1, 3); + + //// 6. 添加信号槽, 处理点击 "创建群聊" 按钮 + //connect(createGroupBtn->getAvatar(), &QPushButton::clicked, this, [=]() { + // ChooseFriendDialog* chooseFriendDialog = new ChooseFriendDialog(this, userInfo.userId); + // chooseFriendDialog->exec(); + // }); + + //connect(deleteFriendBtn, &QPushButton::clicked, this, &SessionDetailWidget::clickDeleteFriendBtn); + +} \ No newline at end of file diff --git a/sessiondetailwidget.h b/sessiondetailwidget.h new file mode 100644 index 0000000..321b3e9 --- /dev/null +++ b/sessiondetailwidget.h @@ -0,0 +1,44 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "debug.h" +#include "model/data.h" + +using namespace model; + +/////////////////////////////////////// +///表示 一个头像 + 一个名字的组合控件 +/////////////////////////////////////// +class AvatarItem : public QWidget { +public: + AvatarItem(const QIcon& avatar, const QString& name); + +private: + QPushButton* avatarBtn; + QLabel* nameLabel; +}; + +/////////////////////////////////////// +///表示“单聊会话详情”窗口 +/////////////////////////////////////// +class SessionDetailWidget : public QDialog +{ + Q_OBJECT + +public: + SessionDetailWidget(QWidget *parent); + +private: + /*UserInfo userInfo;*/ + + QPushButton* deleteFriendBtn; +}; diff --git a/userinfowidget.cpp b/userinfowidget.cpp new file mode 100644 index 0000000..9247135 --- /dev/null +++ b/userinfowidget.cpp @@ -0,0 +1,122 @@ +#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); + //} + +} \ No newline at end of file diff --git a/userinfowidget.h b/userinfowidget.h new file mode 100644 index 0000000..51817f4 --- /dev/null +++ b/userinfowidget.h @@ -0,0 +1,41 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +#include "mainwidget.h" +#include "model/data.h" + +//using model::Message; +using namespace model; + +class UserInfoWidget : public QDialog +{ + Q_OBJECT + +public: + UserInfoWidget(const UserInfo& userInfo, QWidget *parent); + +private: + ////保存对应的Message对象,暂时先放在这里 + //Message message; + const UserInfo& userInfo; + + QPushButton* avatarBtn; + QLabel* idTag; + QLabel* idLabel; + + QLabel* nameTag; + QLabel* nameLabel; + + QLabel* phoneTag; + QLabel* phoneLabel; + + QPushButton* applyBtn; + QPushButton* sendMessageBtn; + QPushButton* deleteFriendBtn; +};