FORGE KUI / docs

桌面窗口与标题栏

原生窗口配置、自定义标题栏、窗口按钮与退出清理。

版本 3.61.7

先用系统窗口验证内容

先让普通窗口显示页面,再考虑无边框外观。配置标题、初始尺寸与最小尺寸,确保主操作在最小窗口仍可访问。不要为了模仿设计稿隐藏了关闭入口。

自定义标题栏需要真实行为

frameless 改变的是窗口边框,最小化、最大化、还原和关闭还要连接 Window API。标题栏拖拽区使用 app-region,按钮排除拖拽;状态变化时更新最大化图标和可访问名称。

cpp
    auto* minimize = doc->getElementById("window-minimize");
    auto* maximize = doc->getElementById("window-maximize");
    auto* close = doc->getElementById("window-close");
    if (!minimize || !maximize || !close) return 6;
    auto* nativeWindow = window.get();
    const auto updateWindowControls = [nativeWindow, maximize, english]() {
        const bool maximized = nativeWindow->isMaximized();
        maximize->setAttribute("data-maximized", maximized ? "true" : "false");
        const std::string label = maximized ? (english ? "Restore" : "还原")
                                           : (english ? "Maximize" : "最大化");
        maximize->setAttribute("aria-label", label);
        maximize->setAttribute("title", label);
    };
    minimize->addEventListener("click", [nativeWindow](kui::Event&) { nativeWindow->minimize(); });
    maximize->addEventListener("click", [nativeWindow, updateWindowControls](kui::Event&) {
        if (nativeWindow->isMaximized()) nativeWindow->restore();
        else nativeWindow->maximize();
        updateWindowControls();

关闭时检查未完成的任务

保存策略由应用决定。若有未保存文本、网络任务或 Lua 计时器,关闭流程要明确处理;不要让后台结果继续访问已关闭窗口。窗口回调、脚本和页面模型应按所有权顺序清理。

窗口验收

每个按钮都实际点击一遍,不能只检查图标。

  1. 最小化后能从任务栏恢复。
  2. 最大化再还原,内容重排、图标与提示同步。
  3. 拖动标题栏移动窗口;点击按钮不会误触发拖拽。
  4. 缩至最小尺寸,输入和保存可用;关闭后进程正常结束。

文档有误或遗漏?

反馈此页问题 →