XMeet

Mediasoup视频会议


宫格控制

<p>本文详细描述了宫格模式切换的UI逻辑以及程序逻辑</p> <h2>一. 宫格模式切换</h2> <pre><code>在ITaskMainPanel类中, 聚合使用了右下角的几个模式切换按纽, 它们是:演讲模式,宫格模式,列表模式 当用户点击了宫格模式按纽以后, 会触发对应m_pButtonGrid对象所绑定的按纽事件ITaskMainPanel::OnRightBottomButtonClicked 在这个事件处理中, 程序会执行下列逻辑: 1. 设置按纽选中状态和样式 2. 设置列表模式标志EmUIKind::em_list, 可以通过 3. 更新宫格位置数据以及左右键头显示状态</code></pre> <h2>二. 布局调整与OnSize事件</h2> <pre><code>由于在列表模式中加入了左右键头按纽, 所以以前的grid布局已经不能胜任 在先前的grid外面又嵌套了一层HBoxLayout, 权重为0,1,0 先前的逻辑并没有仔细研究, 发现在HBoxLayout布局里加入左右键头以后(单加左不会), 会使中间的列表窗口高度同化, 所以需要使用 OnSize事件(ITaskCentre::resizeEvent)处理一下中间grid布局的大小 新加代码: QRect rcClient = m_pRootGridLayout-&gt;contentsRect(); m_pVideoContainer-&gt;setFixedHeight(rcClient.height());</code></pre> <h2>三. 左右键头管理</h2> <pre><code>在ITaskCentre类中, 组合使用了宫格左键头(m_btnArrowLeft)和宫格右键头(m_btnArrowRight). 在ITaskCentre::InitITaskCentre() 中将会对按纽样式和大小, 以及布局进行初始化, 同时会绑定这两个按纽的点击事件: ITaskVideoContainer::OnButtonArrowLeft() ITaskVideoContainer::OnButtonArrowRight() 当用户点击这两个按纽的事件以后, 程序将进行当前页与最小/最大页进行判断, 并将当前页设置成翻页以后的最新页 对应变量内容为: int ITaskVideoContainer::m_nPageCurrent // 当前页 int ITaskVideoContainer::m_nPageCount // 最大页 最后, 通过调用HBTalkCentre::getInstance()-&gt;UpdateUserListInOutNumber(); 方法更新宫格模式最新布局.</code></pre> <h2>四. 切页管理</h2> <pre><code>当用户点击了左翻和右翻的键头, 则会触发切页的功能, 对应的事件处理方法如下: void ITaskVideoContainer::OnButtonArrowLeft() void ITaskVideoContainer::OnButtonArrowRight() 当用户点击了向左按纽, 在这里判断是否还有左页, 如果没有则隐藏左按纽 当用户点击了向右按纽, 在这里判断是否还有右页, 如果没有则隐藏右按纽 最后, 更新主窗口中的宫格模式窗口内容, 参考如下方法: HBTalkCentre::getInstance()-&gt;UpdateUserListInOutNumber();</code></pre> <h2>五. 调试方法</h2> <pre><code>如果没有实际的客户端 , 可以通过Ctrl+小键盘+号来添加虚拟坐位, 以测试左右翻页功能 另外, 可以通过胡力华写的命令行python测试工具来添加实际用户来进行真实数据的测试. 代码参考:void ITaskMainPanel::keyReleaseEvent(QKeyEvent* event)</code></pre>

页面列表

ITEM_HTML