自定义gtk窗口标题栏

自定义gtk窗口标题栏,gtk,Gtk,如何自定义gtk窗口标题栏。我需要添加自定义按钮和标题栏图像。您不能。标题栏由窗口管理器绘制,而不是由GTK绘制。您可以告诉窗口管理器使用window.set\u title()设置标题,也可以使用window.set\u icon()。就是这样。这里有一个可行的解决方案: #include <gtk/gtk.h> int main(int argc, char *argv[]) { GtkWidget *window; gtk_init(&argc, &a

如何自定义gtk窗口标题栏。我需要添加自定义按钮和标题栏图像。

您不能。标题栏由窗口管理器绘制,而不是由GTK绘制。您可以告诉窗口管理器使用
window.set\u title()
设置标题,也可以使用
window.set\u icon()。就是这样。

这里有一个可行的解决方案:

#include <gtk/gtk.h>

int main(int argc, char *argv[]) {
    GtkWidget *window;
    gtk_init(&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "UV with Y variable");
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}
#包括
int main(int argc,char*argv[]){
GtkWidget*窗口;
gtk_init(&argc,&argv);
窗口=gtk_窗口_新建(gtk_窗口_顶层);
gtk_窗口设置标题(gtk_窗口(窗口),“带Y变量的UV”);
gtk_小部件_全部显示(窗口);
gtk_main();
返回0;
}

从GTK 3.10开始,您可以使用


gtk_window\u set_titlebar(GtkWindow*window,GtkWidget*titlebar)
因为您可以看到需要的唯一参数是要自定义的窗口和将用作标题栏的GtkWidget。GTK开发人员建议您使用它,因为它提供了一些您希望从标题栏中看到的功能,如“开箱即用”关闭窗口按钮,但您可以自由使用任何其他GtkWidget。

好的,没问题。现在,我将在window属性上将_装饰设置为FALSE。并添加一个vBox对象,我将在其中添加几个hBox对象。其中,我可以添加所有按钮(用于设置窗口关闭、最小化和最大化)和一个图像作为标题栏图像。如果是,我应该如何执行。仅供参考,我正在编辑我的问题,以描述标题栏的外观。@iSight,如果这样做,您将如何在屏幕上移动窗口?最好在标题栏下方包含一个带有额外按钮的工具栏。我不能在标题栏区域上通知一个事件吗?我在删除标题栏后创建了该区域。
set\u titlebar
?这在2010年我写答案时不存在,但我鼓励你添加另一个答案,解释如何做到这一点!不可避免的问题。。。真的有必要吗?