mirror of
https://gitee.com/Zhaoxin59/my-chat_-client.git
synced 2026-02-13 16:41:48 +08:00
97 lines
3.4 KiB
C++
97 lines
3.4 KiB
C++
#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);
|
|
|
|
} |