MainPanel.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #pragma once
  2. #include <QStringList>
  3. #include <QWidget>
  4. #include "qobjectdefs.h"
  5. #include <QMutex>
  6. #include <QWaitCondition>
  7. #include <QTimer>
  8. class QSplitter;
  9. class QListWidget;
  10. class UserProfileWidget;
  11. class ChatWindow;
  12. class QListWidgetItem;
  13. class WebSocketClient;
  14. class MainPanel : public QWidget
  15. {
  16. Q_OBJECT
  17. public:
  18. explicit MainPanel(QWidget *parent = nullptr);
  19. ~MainPanel();
  20. void setRole(const QStringList &roleList);
  21. void setPushRoomId(const QString &room);
  22. QListWidget *roomListWidget() { return m_roomListWidget; }
  23. signals:
  24. void logoutClicked();
  25. private:
  26. void setPlayerWidget(QWidget *newPlayer);
  27. void roomItemChanged(QListWidgetItem *item);
  28. void handleDebouncedPlay(); // 防抖处理函数
  29. private:
  30. QSplitter *splitter = nullptr;
  31. QWidget *playerContainer = nullptr;
  32. QWidget *playerWidget = nullptr;
  33. UserProfileWidget *userProfile = nullptr;
  34. ChatWindow *chatView = nullptr;
  35. QListWidget *m_roomListWidget = nullptr;
  36. WebSocketClient *webSocketClient = nullptr;
  37. bool m_isStartingPlay = false;
  38. QMutex m_playMutex;
  39. QWaitCondition m_playCond;
  40. QTimer *m_debounceTimer = nullptr;
  41. QString m_pendingRoomId;
  42. };