gtk-3.0学习笔记3-布局始

创建应用程序时,您需要在窗口中放置多个窗口小部件。当您要将多个窗口小部件放入窗口时,控制每个窗口小部件的位置和大小变得非常重要。
GTK +带有各种各样的布局容器 ,其目的是控制添加到其中的子窗口小部件的布局。

#include <gtk/gtk.h>

static void print_hello (GtkWidget *widget,
             gpointer   data)
{
  g_print ("Hello World\n");
}

static void activate (GtkApplication *app,
                      gpointer  user_data)
{
  GtkWidget *window;
  GtkWidget *grid;
  GtkWidget *button;

  /* 创建一个新的window,并设置他的title */
  window = gtk_application_window_new (app);
  gtk_window_set_title (GTK_WINDOW (window), "Window");
  gtk_container_set_border_width (GTK_CONTAINER (window), 10);

  /* 构建一个容器来放置我们的button */
  grid = gtk_grid_new ();

  /* 把容器放入窗口中 */
  gtk_container_add (GTK_CONTAINER (window), grid);

  button = gtk_button_new_with_label ("Button 1");
  /* 链接button的clicked(点击)事件
  g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);

  /* 
   * gtk_grid_attach参数(GtkGrid *parent,GtkWidget child,gint left,gint top,gint width,gint heigjt)
   */
  gtk_grid_attach (GTK_GRID (grid), button, 0, 0, 1, 1);

  button = gtk_button_new_with_label ("Button 2");
  g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);

  gtk_grid_attach (GTK_GRID (grid), button, 1, 0, 1, 1);

  button = gtk_button_new_with_label ("Quit");
  g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);

  gtk_grid_attach (GTK_GRID (grid), button, 0, 1, 2, 1);


//这里我们做完了所有的事 显示布局
  gtk_widget_show_all (window);

}

int main (int    argc,
          char **argv)
{
  GtkApplication *app;
  int status;

  app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
  status = g_application_run (G_APPLICATION (app), argc, argv);
  g_object_unref (app);

  return status;
}

原创来自翻译,一个小菜鸟学习的开始

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值