mirror of
https://gitee.com/Zhaoxin59/my-chat_-client.git
synced 2026-02-14 00:51:48 +08:00
update winodws
This commit is contained in:
97
sessiondetailwidget.cpp
Normal file
97
sessiondetailwidget.cpp
Normal file
@ -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);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user