mirror of
https://gitee.com/Zhaoxin59/my-chat_-client.git
synced 2026-02-13 16:41:48 +08:00
update winodws
This commit is contained in:
@ -34,6 +34,10 @@ set(PROJECT_SOURCES
|
|||||||
messageeditarea.cpp
|
messageeditarea.cpp
|
||||||
SelfInfoWidget.h
|
SelfInfoWidget.h
|
||||||
SelfInfoWidget.cpp
|
SelfInfoWidget.cpp
|
||||||
|
userinfowidget.h
|
||||||
|
userinfowidget.cpp
|
||||||
|
sessiondetailwidget.h
|
||||||
|
sessiondetailwidget.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
||||||
@ -51,8 +55,6 @@ endif()
|
|||||||
|
|
||||||
target_link_libraries(ClientChat PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
|
target_link_libraries(ClientChat PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
|
||||||
|
|
||||||
# Bundle设置(略)
|
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
install(TARGETS ClientChat
|
install(TARGETS ClientChat
|
||||||
BUNDLE DESTINATION .
|
BUNDLE DESTINATION .
|
||||||
|
|||||||
@ -4,7 +4,7 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
{
|
{
|
||||||
//设置整个窗口的属性
|
//设置整个窗口的属性
|
||||||
this->setFixedSize(450, 250);
|
this->setFixedSize(500, 200);
|
||||||
this->setWindowTitle("个人信息");
|
this->setWindowTitle("个人信息");
|
||||||
this->setWindowIcon(QIcon(":/resource/image/logo.png"));
|
this->setWindowIcon(QIcon(":/resource/image/logo.png"));
|
||||||
//窗口被关闭时,自动销毁这个对话框对象
|
//窗口被关闭时,自动销毁这个对话框对象
|
||||||
@ -14,8 +14,10 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
|
|
||||||
//创建布局管理器
|
//创建布局管理器
|
||||||
QGridLayout* layout = new QGridLayout();
|
QGridLayout* layout = new QGridLayout();
|
||||||
layout->setSpacing(0);
|
//layout->setSpacing(0);
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setHorizontalSpacing(10);
|
||||||
|
layout->setVerticalSpacing(3);
|
||||||
|
layout->setContentsMargins(20, 20, 20, 0);
|
||||||
layout->setAlignment(Qt::AlignTop);
|
layout->setAlignment(Qt::AlignTop);
|
||||||
this->setLayout(layout);
|
this->setLayout(layout);
|
||||||
|
|
||||||
@ -29,6 +31,7 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
QString labelStyle = "QLabel { font-size: 14px; font-weight: 800; }";
|
QString labelStyle = "QLabel { font-size: 14px; font-weight: 800; }";
|
||||||
QString btnStyle = "QPushButton {border: none; background-color: transparent; }";
|
QString btnStyle = "QPushButton {border: none; background-color: transparent; }";
|
||||||
btnStyle += "QPushButton:pressed { background-color: rgb(210, 210, 210); }";
|
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;
|
int height = 30;
|
||||||
|
|
||||||
@ -36,7 +39,7 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
idTag = new QLabel();
|
idTag = new QLabel();
|
||||||
idTag->setFixedSize(50, height);
|
idTag->setFixedSize(50, height);
|
||||||
idTag->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
idTag->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||||
idTag->setText("序号");
|
idTag->setText("ID");
|
||||||
idTag->setStyleSheet(labelStyle);
|
idTag->setStyleSheet(labelStyle);
|
||||||
|
|
||||||
idLabel = new QLabel();
|
idLabel = new QLabel();
|
||||||
@ -55,7 +58,7 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
nameLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
nameLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||||
|
|
||||||
nameModifyBtn = new QPushButton();
|
nameModifyBtn = new QPushButton();
|
||||||
nameModifyBtn->setFixedSize(25, 25);
|
nameModifyBtn->setFixedSize(70, 25);
|
||||||
nameModifyBtn->setIconSize(QSize(20, 20));
|
nameModifyBtn->setIconSize(QSize(20, 20));
|
||||||
nameModifyBtn->setIcon(QIcon(":/resource/image/modify.png"));
|
nameModifyBtn->setIcon(QIcon(":/resource/image/modify.png"));
|
||||||
nameModifyBtn->setStyleSheet(btnStyle);
|
nameModifyBtn->setStyleSheet(btnStyle);
|
||||||
@ -63,10 +66,11 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
nameEdit = new QLineEdit();
|
nameEdit = new QLineEdit();
|
||||||
nameEdit->setFixedHeight(height);
|
nameEdit->setFixedHeight(height);
|
||||||
nameEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
nameEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||||
|
nameEdit->setStyleSheet(btnStyle);
|
||||||
nameEdit->hide();
|
nameEdit->hide();
|
||||||
|
|
||||||
nameSubmitBtn = new QPushButton();
|
nameSubmitBtn = new QPushButton();
|
||||||
nameSubmitBtn->setFixedSize(25, 25);
|
nameSubmitBtn->setFixedSize(70, 25);
|
||||||
nameSubmitBtn->setIconSize(QSize(20, 20));
|
nameSubmitBtn->setIconSize(QSize(20, 20));
|
||||||
nameSubmitBtn->setIcon(QIcon(":/resource/image/submit.png"));
|
nameSubmitBtn->setIcon(QIcon(":/resource/image/submit.png"));
|
||||||
nameSubmitBtn->setStyleSheet(btnStyle);
|
nameSubmitBtn->setStyleSheet(btnStyle);
|
||||||
@ -84,7 +88,7 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
descLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
descLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
|
|
||||||
descModifyBtn = new QPushButton();
|
descModifyBtn = new QPushButton();
|
||||||
descModifyBtn->setFixedSize(25, 25);
|
descModifyBtn->setFixedSize(70, 25);
|
||||||
descModifyBtn->setIconSize(QSize(20, 20));
|
descModifyBtn->setIconSize(QSize(20, 20));
|
||||||
descModifyBtn->setIcon(QIcon(":/resource/image/modify.png"));
|
descModifyBtn->setIcon(QIcon(":/resource/image/modify.png"));
|
||||||
descModifyBtn->setStyleSheet(btnStyle);
|
descModifyBtn->setStyleSheet(btnStyle);
|
||||||
@ -92,12 +96,13 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
descEdit = new QLineEdit();
|
descEdit = new QLineEdit();
|
||||||
descEdit->setFixedHeight(height);
|
descEdit->setFixedHeight(height);
|
||||||
descEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
descEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||||
|
descEdit->setStyleSheet(btnStyle);
|
||||||
descEdit->hide();
|
descEdit->hide();
|
||||||
|
|
||||||
descSubmitBtn = new QPushButton();
|
descSubmitBtn = new QPushButton();
|
||||||
descSubmitBtn->setFixedSize(25, 25);
|
descSubmitBtn->setFixedSize(70, 25);
|
||||||
descSubmitBtn->setIconSize(QSize(20, 20));
|
descSubmitBtn->setIconSize(QSize(20, 20));
|
||||||
descSubmitBtn->setIcon(QIcon(":/resource/image/modify.png"));
|
descSubmitBtn->setIcon(QIcon(":/resource/image/submit.png"));
|
||||||
descSubmitBtn->setStyleSheet(btnStyle);
|
descSubmitBtn->setStyleSheet(btnStyle);
|
||||||
descSubmitBtn->hide();
|
descSubmitBtn->hide();
|
||||||
|
|
||||||
@ -113,7 +118,7 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
phoneLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
phoneLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||||
|
|
||||||
phoneModifyBtn = new QPushButton();
|
phoneModifyBtn = new QPushButton();
|
||||||
phoneModifyBtn->setFixedSize(25, 25);
|
phoneModifyBtn->setFixedSize(70, 25);
|
||||||
phoneModifyBtn->setIconSize(QSize(20, 20));
|
phoneModifyBtn->setIconSize(QSize(20, 20));
|
||||||
phoneModifyBtn->setIcon(QIcon(":/resource/image/modify.png"));
|
phoneModifyBtn->setIcon(QIcon(":/resource/image/modify.png"));
|
||||||
phoneModifyBtn->setStyleSheet(btnStyle);
|
phoneModifyBtn->setStyleSheet(btnStyle);
|
||||||
@ -121,10 +126,11 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
phoneEdit = new QLineEdit();
|
phoneEdit = new QLineEdit();
|
||||||
phoneEdit->setFixedHeight(height);
|
phoneEdit->setFixedHeight(height);
|
||||||
phoneEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
phoneEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||||
|
phoneEdit->setStyleSheet(btnStyle);
|
||||||
phoneEdit->hide();
|
phoneEdit->hide();
|
||||||
|
|
||||||
phoneSubmitBtn = new QPushButton();
|
phoneSubmitBtn = new QPushButton();
|
||||||
phoneSubmitBtn->setFixedSize(25, 25);
|
phoneSubmitBtn->setFixedSize(70, 25);
|
||||||
phoneSubmitBtn->setIconSize(QSize(20, 20));
|
phoneSubmitBtn->setIconSize(QSize(20, 20));
|
||||||
phoneSubmitBtn->setIcon(QIcon(":/resource/image/submit.png"));
|
phoneSubmitBtn->setIcon(QIcon(":/resource/image/submit.png"));
|
||||||
phoneSubmitBtn->setStyleSheet(btnStyle);
|
phoneSubmitBtn->setStyleSheet(btnStyle);
|
||||||
@ -135,16 +141,26 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
verifyCodeTag = new QLabel();
|
verifyCodeTag = new QLabel();
|
||||||
verifyCodeTag->setFixedSize(50, height);
|
verifyCodeTag->setFixedSize(50, height);
|
||||||
verifyCodeTag->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
verifyCodeTag->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||||
verifyCodeTag->setText("输入验证码:");
|
verifyCodeTag->setText("验证码:");
|
||||||
verifyCodeTag->setStyleSheet(labelStyle);
|
verifyCodeTag->setStyleSheet(labelStyle);
|
||||||
|
verifyCodeTag->hide();
|
||||||
|
|
||||||
verifyCodeEdit = new QLineEdit();
|
verifyCodeEdit = new QLineEdit();
|
||||||
verifyCodeEdit->setFixedHeight(height);
|
verifyCodeEdit->setFixedHeight(height);
|
||||||
verifyCodeEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
verifyCodeEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||||
//verifyCodeEdit->hide();
|
verifyCodeEdit->setStyleSheet(editStyle);
|
||||||
|
verifyCodeEdit->hide();
|
||||||
|
|
||||||
getVerifyCodeBtn = new QPushButton();
|
getVerifyCodeBtn = new QPushButton();
|
||||||
getVerifyCodeBtn->setText("获取验证码");
|
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);
|
layout->addWidget(avatarBtn, 0, 0, 3, 1);
|
||||||
@ -163,9 +179,9 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
layout->addWidget(phoneLabel, 3, 2);
|
layout->addWidget(phoneLabel, 3, 2);
|
||||||
layout->addWidget(phoneModifyBtn, 3, 3);
|
layout->addWidget(phoneModifyBtn, 3, 3);
|
||||||
|
|
||||||
layout->addWidget(verifyCodeTag, 4, 1);
|
/*layout->addWidget(verifyCodeTag, 4, 1);
|
||||||
layout->addWidget(verifyCodeEdit, 4, 2);
|
layout->addWidget(verifyCodeEdit, 4, 2);
|
||||||
layout->addWidget(getVerifyCodeBtn, 4, 3);
|
layout->addWidget(getVerifyCodeBtn, 4, 3);*/
|
||||||
|
|
||||||
#if TEST_UI
|
#if TEST_UI
|
||||||
idLabel->setText("12345");
|
idLabel->setText("12345");
|
||||||
@ -173,4 +189,62 @@ SelfInfoWidget::SelfInfoWidget(QWidget *parent)
|
|||||||
descLabel->setText("It didn't matter that i lived another day.");
|
descLabel->setText("It didn't matter that i lived another day.");
|
||||||
phoneLabel->setText("12345678900");
|
phoneLabel->setText("12345678900");
|
||||||
#endif
|
#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);*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
#include "sessionfriendarea.h"
|
#include "sessiondetailwidget.h"
|
||||||
|
|
||||||
MainWidget *MainWidget::instance = nullptr;
|
MainWidget *MainWidget::instance = nullptr;
|
||||||
|
|
||||||
@ -197,7 +197,7 @@ void MainWidget::initRightWindow()
|
|||||||
|
|
||||||
hlayout->addWidget(sessionTitleLabel);
|
hlayout->addWidget(sessionTitleLabel);
|
||||||
|
|
||||||
QPushButton* extraBtn = new QPushButton();
|
extraBtn = new QPushButton();
|
||||||
extraBtn->setFixedSize(30, 30);
|
extraBtn->setFixedSize(30, 30);
|
||||||
extraBtn->setIconSize(QSize(30, 30));
|
extraBtn->setIconSize(QSize(30, 30));
|
||||||
extraBtn->setIcon(QIcon(":/resource/image/more.png"));
|
extraBtn->setIcon(QIcon(":/resource/image/more.png"));
|
||||||
@ -232,10 +232,19 @@ void MainWidget::initSignalSlot()
|
|||||||
/////////////////////////////////////
|
/////////////////////////////////////
|
||||||
connect(userAvatar, &QPushButton::clicked, this, [=]()->void {
|
connect(userAvatar, &QPushButton::clicked, this, [=]()->void {
|
||||||
SelfInfoWidget* selfInfoWidget = new SelfInfoWidget(this);
|
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->exec(); //弹出模态对话框
|
||||||
//selfInfoWidget->show(); //弹出非模态对加框
|
//selfInfoWidget->show(); //弹出非模态对加框
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////
|
||||||
|
// 点击右上角的更多按钮,扩展会话的详细信息
|
||||||
|
/////////////////////////////////////
|
||||||
|
connect(extraBtn, &QPushButton::clicked, this, [=]() {
|
||||||
|
SessionDetailWidget* sessionDetailWidget = new SessionDetailWidget(this);
|
||||||
|
sessionDetailWidget->exec();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWidget::switchTabToSession()
|
void MainWidget::switchTabToSession()
|
||||||
|
|||||||
@ -4,11 +4,13 @@
|
|||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
|
#include <QMainWindow>
|
||||||
|
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "messageeditarea.h"
|
#include "messageeditarea.h"
|
||||||
#include "messageshowarea.h"
|
#include "messageshowarea.h"
|
||||||
#include "SelfInfoWidget.h"
|
#include "SelfInfoWidget.h"
|
||||||
|
#include "sessionfriendarea.h"
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
@ -53,6 +55,9 @@ private:
|
|||||||
//添加好友按钮
|
//添加好友按钮
|
||||||
QPushButton* addFriendBtn;
|
QPushButton* addFriendBtn;
|
||||||
|
|
||||||
|
//显示会话详情按钮
|
||||||
|
QPushButton* extraBtn;
|
||||||
|
|
||||||
//消息展示区
|
//消息展示区
|
||||||
MessageShowArea* messageShowArea;
|
MessageShowArea* messageShowArea;
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
#include "messageshowarea.h"
|
#include "messageshowarea.h"
|
||||||
|
|
||||||
|
#include "mainwidget.h"
|
||||||
|
#include "userinfowidget.h"
|
||||||
|
|
||||||
MessageShowArea::MessageShowArea() {
|
MessageShowArea::MessageShowArea() {
|
||||||
//初始化基本属性
|
//初始化基本属性
|
||||||
this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
@ -22,25 +25,31 @@ MessageShowArea::MessageShowArea() {
|
|||||||
|
|
||||||
// 添加测试数据
|
// 添加测试数据
|
||||||
#if TEST_UI
|
#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;
|
bool k = true;
|
||||||
for(int i = 0; i < 8; i++) {
|
for(int i = 0; i < 8; i++) {
|
||||||
model::UserInfo userInfo;
|
model::UserInfo userInfo;
|
||||||
|
userInfo.userId = QString::number(i);
|
||||||
|
userInfo.phone = "12345678900";
|
||||||
|
userInfo.description = "A test description.";
|
||||||
userInfo.nickname = "xyz" + QString::number(i);
|
userInfo.nickname = "xyz" + QString::number(i);
|
||||||
userInfo.avatar = QIcon(":/resource/image/defaultAvatar.png");
|
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(), "");
|
Message message = Message::makeMessage(model::TEXT_TYPE, "", userInfo, (QString("this is a test message...") + QString::number(i)).toUtf8(), "");
|
||||||
k = !k;
|
k = !k;
|
||||||
this->addMessage(k, message);
|
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
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -137,6 +146,14 @@ MessageItem *MessageItem::makeMessageItem(bool isLeft, const Message &message)
|
|||||||
layout->addWidget(contentWidget, 1, 0);
|
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;
|
return messageItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QPainterPath>
|
#include <QPainterPath>
|
||||||
|
|
||||||
|
|
||||||
#include "model/data.h"
|
#include "model/data.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
|
|||||||
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);
|
||||||
|
|
||||||
|
}
|
||||||
44
sessiondetailwidget.h
Normal file
44
sessiondetailwidget.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QMainWindow>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QFontMetrics>
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
#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;
|
||||||
|
};
|
||||||
122
userinfowidget.cpp
Normal file
122
userinfowidget.cpp
Normal file
@ -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);
|
||||||
|
//}
|
||||||
|
|
||||||
|
}
|
||||||
41
userinfowidget.h
Normal file
41
userinfowidget.h
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QGridLayout>
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
#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;
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user