Files
MyChat_Client/mainwidget.h
2025-06-18 18:21:23 +08:00

114 lines
2.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QMainWindow>
#include "debug.h"
#include "messageeditarea.h"
#include "messageshowarea.h"
#include "selfinfowidget.h"
#include "sessionfriendarea.h"
#include "groupsessiondetailwidget.h"
#include "addfrienddialog.h"
#include "model/datacenter.h"
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWidget;
}
QT_END_NAMESPACE
class MainWidget : public QWidget
{
Q_OBJECT
private:
//对于单例模式最关键的部分是限制别人创建实例
static MainWidget* instance;
public:
static MainWidget* getInstance();
public:
MainWidget(QWidget *parent = nullptr);
~MainWidget();
private:
Ui::MainWidget *ui;
//窗口左侧部分
QWidget* windowLeft;
//窗口中间部分
QWidget* windowMid;
//窗口右侧部分
QWidget* windowRight;
//用户头像
QPushButton* userAvatar;
//会话标签页按钮
QPushButton* sessionTabBtn;
//好友标签页按钮
QPushButton* friendTabBtn;
//好友申请标签页按钮
QPushButton* applyTabBtn;
//用户搜索框
QLineEdit* searchEdit;
//添加好友按钮
QPushButton* addFriendBtn;
//
SessionFriendArea* sessionFriendArea;
//显示会话标题
QLabel* sessionTitleLabel;
//显示会话详情按钮
QPushButton* extraBtn;
//消息展示区
MessageShowArea* messageShowArea;
//消息编辑区
MessageEditArea* messageEditArea;
enum ActiveTab {
SESSION_LIST,
FRIEND_LIST,
APPLY_LIST
};
ActiveTab activeTab = SESSION_LIST;
public:
void initMainWindow();
void initLeftWindow();
void initMidWindow();
void initRightWindow();
void initSignalSlot();
void switchTabToSession();
void switchTabToFriend();
void switchTabToApply();
void loadSessionList();
void loadFriendList();
void loadApplyList();
void updateFriendList();
void updateChatSessionList();
void updateApplyList();
void loadRecentMessage(const QString& chatSessionId);
void updateRecentMessage(const QString& chatSessionId);
//点击好友项后切换到会话列表的总函数上方的switchTabToSession只是其中的一个环节
void switchSession(const QString& userId);
MessageShowArea* getMessageShowArea();
};
#endif // MAINWIDGET_H