Skip to main content

Module render

Module render 

Source
Expand description

唯一渲染入口(L2):真实 eframe App 与 kittest 建构走同一个 render_body。

布局 v7(0.4.1 BD-UI-54:拆停靠库、回归原生容器;蓝本 = Python 主窗 mainwindow.py): TopBottomPanel(菜单) → TopBottomPanel(行情带) → SidePanel(下单) → CentralPanel(数据区 2×2 = 薄 QSplitter 两刀) → Window 弹窗。

  • 行情带 = 六所固定 tab 条(state::MARKET_ORDER,用户裁定「每个交易所都要一个」; 标签 = 交易所中文名,条在表之下且先给它预留高度不许外溢 —— 九期 BD-UI-62) 加当前所的行情表;每个所都有自己的表与空态。只有 tick 表,没有按所的滚动表 —— 唯一源 = eTick. 订阅流,不从 bar 回。行内任意格单击 = 带入下单面板 (ek 增值,方案钉:盘口四列带方向,买1 价/量 → 卖,卖1 价/量 → 买,价格列 顺带填价,其余列方向保持默认 —— 0.2.1 import_tick),双击 = 弹 K线窗。
  • 下单侧(SidePanel::left,缺省 300 ≈ Python setFixedWidth(300)):下单面板 (Python TradingWidget 等价:9 字段 + 委托 + 全撤;表单 = 网格,按钮/提示语都是 网格行;网格后置 err label 由 ScrollArea 吸收 sizing 退让,BD-UI-27)+ 盘口(买5卖5,Python TradingWidget 内序:字段钮 → 盘口)。
  • 数据区组容器:委托|未成交 / 成交 / 持仓 / 资金|日志 四组(Python 四个 QTabWidget 等价,tab 条 = 自绘 tab_label),2×2 两刀 = crate::splitters(份额可拖, 态在 shared.data_split,恢复布局回 50:50);撤单钮仅活动行,既有 s11 钉口径; 委托行双击 = 撤单,Python OrderMonitor 等价;格内宽表走横向滚动,D7 口径)。
  • 弹窗两式(BD-UI-32):运维窗(菜单「运维」:插件/服务/依赖;0.2.10 起 流控查询钮随 sim 退场撤除)、 CTP 配置窗(菜单「网关」,CTP 插件自己的界面)= egui::Window 依附主窗; 查询合约窗(菜单「查询合约」:查询 + 勾选 + 订阅钮,Python ContractManager 等价)、K线窗(双击弹出,按合约多开)= 独立 OS 窗(show_viewport_immediate, 原生最小化/最大化/关闭,可拖出主窗;后端不支持多窗自动回退 egui::Window, kittest 走回退面断言)。
  • 订阅两入口(用户裁定,网关窗不定死订阅):下单面板代码框回车订阅 (Python returnPressed 等价);查询合约窗勾选订阅。合约数据 = eContract. 自动回流(ek-ctp 登录后自动查询,UI 只收不催)。
  • 回灌表单与票据文本框已退役(界面面);总线口(UiCmd::Reload 等)保留。

kittest 断言面:各单元格独立 Label(get_by_label 直查);操作走 push_cmd 入队(ui 插件 eTimer 辞行出队),确认状态就地翻位,零自制通道。 隔离红标:行状态含 Quarantin(快照扫描,BD-UI-17)。

Constants§

BTN_ACCOUNT_ADD
账户面板:添加账户钮(派生注册名 → svctl.start + {gw}.configure)。
BTN_CANCEL_ALL
全撤按钮标签(v4;活动委托逐个走既有撤单 ask)。
BTN_CANCEL_CONFIRM
取消待确认按钮标签。
BTN_CANCEL_ORDER
撤单按钮前缀(S5;行级标签 = 撤单 {orderid})。
BTN_CFG_REFRESH
运维窗「配置托底」节:段目录刷新钮(0.6.0 环节8)。
BTN_PIPELINE_REFRESH
运维窗:装配显形手动重问钮(0.5 M3 —— 管线读数改吃事件后唯一的手动口子)。
BTN_SEND_ORDER
下单提交按钮标签(v4 = Python「委托」钮)。
BTN_SUBSCRIBE_SELECTED
菜单项 → 弹窗入口钮(BD-UI-31 一键直达:菜单钮即入口,一步弹窗, 不再挂下拉层;入口钮标签 = 菜单名本身)。 查询合约窗订阅钮(勾选集 → ask ctp.subscribe)。
MENU_ACCOUNTS
菜单项:账户(弹账户面板;多账号面入口,规划 §5.B。旧「网关」单账号窗 已退役收纳进账户面板的添加/编辑表单,旧常量随之删除)。
MENU_CONTRACTS
菜单项:查询合约(弹查询合约窗;Python ContractManager 等价)。
MENU_HELP
菜单项:帮助。
MENU_OPS
菜单项:运维(弹运维窗)。
TXT_PRODUCT_CLASS_SCOPE
F4 口径句(0.2.20,D-UI-F4-SCOPE):账户面板底部与配置弹窗共用这一条常量。 两处各写一遍字面量 = 将来不同式的坑(s57 数的是“两处都在“)。

Functions§

apply_ui_style
字号 + 间距 + 控件规格 + 主题视觉(0.2.30 起全部走 crate::tokens;主题只有一套 Qt深色,Theme 枚举与菜单循环钮已删 —— 裁定 8)。真实 App、独立子窗(immediate 共享同一 Context)、kittest 三处同源。 语义色(涨红跌绿 / 多红空绿 / 警告橙 / 错误深红 / 成功深绿 / 次级灰)不在这一层: 它们在 tokens::semantic 里恒定 —— 0.8.0 的口径是「hue 恒定、明度跟档」 (判据 u11 钉着:浅档也不许把跌染成蓝),渲染侧走 tokens::rise(ctx) 等访问器取当前档。
exchange_tab_name
行情带 = 当前所的行情表 + 六所固定 tab 条(0.4.1 BD-UI-54 回归原生容器; 「每交易所一格」= 六个 tab,每个 tab 都有自己的表与空态,s73 口径不变)。
import_tick
行情带入(0.2.1 扩展):任意列单击 = 带入合约+交易所;盘口四列带方向 (买1价/买1量 → 卖,卖1价/卖1量 → 买 —— 吃对手挂价口径),两个价格列 顺带把该价填进价格格;其余列方向/价格保持表单默认(用户裁定)。
render_body
画一窗(官方面板组合:render_body 直接开顶层面板,不自嵌 CentralPanel)。
stat_color
运维窗「统计」列的颜色(0.4.5 P7d 首发;0.5 M6 加容量参数;0.7.0 背压刀改吃水位)。
table_fill_probe
判据侧读口(0.4.1 七期 BD-UI-60):这张表这一拍的「列宽总和」与「补宽目标宽」。