Electron设置frame:false后,如何仅隐藏默认标题栏保留菜单栏?
在Electron中仅隐藏Windows默认标题栏并保留菜单栏的方法
你用frame: false的问题在于,这个配置会直接移除整个窗口的原生框架——包括标题栏和菜单栏的容器,所以菜单栏跟着消失很正常。要只隐藏标题栏但保留菜单栏,试试下面两种方案:
方案1:用titleBarStyle快速实现(Electron 7+支持)
保留原生窗口框架,仅隐藏标题栏,菜单栏会自动留在顶部:
mainWindow = new BrowserWindow({ frame: true, // 必须保留框架,不然菜单栏没地方放置 titleBarStyle: 'hidden', // 隐藏原生标题栏 menuBarVisible: true // 明确指定菜单栏可见,避免不同环境下的差异 });
这种方式下,Windows系统的窗口控制按钮(最大化、最小化、关闭)会消失,如果需要保留这些按钮,推荐用下面的方案2。
方案2:用titleBarOverlay自定义样式(Electron 14+推荐)
这个配置专门针对Windows平台,既能隐藏原生标题栏,又能保留系统风格的控制按钮,还能自定义匹配App主题的样式:
mainWindow = new BrowserWindow({ frame: true, titleBarOverlay: { color: '#2f3241', // 标题栏覆盖区域的背景色,可匹配你的App主题 symbolColor: '#74b1be' // 控制按钮的图标颜色 }, menuBarVisible: true });
设置后,菜单栏会正常显示在窗口顶部,控制按钮会以半透明覆盖层的形式出现在右上角,样式可以根据需求灵活调整。
另外要注意:如果你的菜单栏是自定义创建的,记得提前用Menu.setApplicationMenu(menu)把菜单栏挂载到窗口上,不然即使配置正确也看不到菜单栏。
内容的提问来源于stack exchange,提问作者blaze
相关产品推荐
相关产品推荐

