GTK可能遇到的问题 汇总

 Failed to load module "canberra-gtk-module"错误的解决方案

解决:

sudo apt-get install libcanberra-gtk-module

 使用Glade 构建GTK应用 按钮失效

使用下面命令构建

gcc main.c `pkg-config --cflags --libs gtk+-3.0` -rdynamic

ubuntu 18.04 LTS 安装codeblocks最新版本

sudo add-apt-repository ppa:pasgui/ppa
sudo apt-get update
sudo apt-get install codeblocks
sudo apt-get install codeblocks-contrib

 在Glade下 下面代码不会起作用

  手动编写界面却可以

  fixedlayout = gtk_fixed_new();
    fixedlayout = GTK_WIDGET(gtk_builder_get_object (builder, "fixedlayout"));
    bgimage = gtk_image_new_from_file(BGIMAGEFILE);
    gtk_fixed_put(GTK_FIXED(fixedlayout), bgimage, 0, 0);

GTK3 设置背景图片

#include <gtk/gtk.h>

   int main( int argc, char *argv[])
   {
               GtkWidget *window;
               GtkWidget *layout;
               GtkWidget *image;
               GtkWidget *button;

               gtk_init(&argc, &argv);

               window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
               gtk_window_set_default_size(GTK_WINDOW(window), 290, 200);
               gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

               layout = gtk_layout_new(NULL, NULL);
               gtk_container_add(GTK_CONTAINER (window), layout);
               gtk_widget_show(layout);

               image = gtk_image_new_from_file("1.png");
               gtk_layout_put(GTK_LAYOUT(layout), image, 0, 0);

               button = gtk_button_new_with_label("Button");
               gtk_layout_put(GTK_LAYOUT(layout), button, 20, 50);
               gtk_widget_set_size_request(button, 80, 35);

               g_signal_connect_swapped(G_OBJECT(window), "destroy",G_CALLBACK(gtk_main_quit), NULL);

               gtk_widget_show_all(window);

               gtk_main();

               return 0;
}

 

 assertion 'GTK_IS_WIDGET (widget)' failed的解决办法

网络上错误解决办法:

-export-dynamic 

正确办法: codeblocks 使用全局信号量 必须配置

-rdynamic

如果你的布局代码是: 拿必须错误 因为你使用的是 GTK2.X ,

<requires lib="gtk+" version="3.0"/>
<object class="GtkWindow" id="window1">

解决办法: 注意在命令行下 使用 GTK3.0 开发 是不会出错的

<requires lib="gtk+" version="2.0"/>
<object class="GtkWindow" id="window1">
原文地址:https://www.cnblogs.com/dgwblog/p/12146591.html