如何隐藏/显示GPUI窗口

编程语言 2026-07-10

所以我在尝试用 zedGPUI 来做一个应用,它可以根据结构体中的一个字段来隐藏和显示。

然而,我只能 cx.remove_window,但从来没能把窗口重新弹出。

即使使用 NSWindow.setIsVisible(true),在应用被隐藏之后也不会显示出来

解决方案

算了,我用下面这种方式把它实现了:

    pub fn handle_event(&mut self, event: RootEvent, cx: &mut Context<Self>) {
        match event {
            RootEvent::AppRefresh(apps) => self.set_open_apps(apps),
            RootEvent::ShowWindow => {
                self.set_visibility(true);
                let displays = cx.displays();
                cx.open_window(window_options(self.get_bounds(displays)), |_, app| {
                    app.new(|_| self.clone())
                })
                .unwrap();
            }
            RootEvent::HideWindow => {
                self.set_visibility(false);
                cx.hide();
            }
        }
    }

唯一的问题是,重新创建应用确实比较昂贵,但我觉得这个问题可以很容易解决。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章