0 前言
GTK+3 时代,GNOME 带头把标题栏从窗口管理器手里接了过来:标题栏成了应用界面的一部分,可以放按钮、放搜索框、放进度条。GTK4 把这件事标准化成三个专用部件——GtkHeaderBar 出标题栏布局,GtkWindowControls 出窗口按钮,GtkWindowHandle 出拖动区。三者拼起来,就是一个现代应用的顶栏。
《GTK4窗口》第 3 节为了把 GtkWindow 讲完,对标题栏只做了概要介绍。本篇把标题栏单独拿出来:从 SSD 与 CSD 两种形态讲起,逐个拆解三件套,最后实战自绘无边框标题栏——手动补回边缘缩放带,并自定义窗口按钮。
本文说的标题栏指窗口顶部的完整装饰条,含标题区、窗口按钮(最小化、最大化、关闭)与拖动区,大致对应 GTK 语境里的“窗口装饰”(window decorations)。
验证环境:Ubuntu 26.04 LTS
1 标题栏的两种形态:SSD 与 CSD
标题栏由谁来画,只有两种归属:
(1)