Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9409002
  • 博文数量: 1748
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 20070
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1748)

文章存档

2024年(24)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: Android平台

2017-11-07 12:31:16

慢慢积累

1. 框架: 

点击(此处)折叠或打开

  1. gtk_init(&argc, &argv);
  2. ...
  3. g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
  4. gtk_main()
2. 加载builder

点击(此处)折叠或打开

  1. GtkBuilder *builder;
  2.         builder = gtk_builder_new_from_file("demo.glode");
  3. 通过名字获取控件
  4. my_widget = GTK_WIDGET( gtk_builder_get_object( builder, "button" ) )
  5. window = GTK_WIDGET(gtk_builder_get_object(builder, "windowMain"));
  6. g_signal_connect(window, "destroy", G_CALLBACK(gtk_widget_destroyed), &window)
3. 绑定回调

点击(此处)折叠或打开

  1. //鼠标离开按钮时触发leave信号
  2.     g_signal_connect(GTK_OBJECT(button),"leave",G_CALLBACK(button_leave),NULL);
  3. //鼠标按下按钮时触发pressed信号
  4.     g_signal_connect(GTK_OBJECT(button),"pressed",G_CALLBACK(button_pressed),NULL);
  5. //鼠标松开是触发clicked信号
  6.     g_signal_connect(GTK_OBJECT(button),"clicked",G_CALLBACK(button_clicked),NULL)

    对应的事件句柄 
  1. void button_leave(GtkWidget *button,gpointer data)  

获取屏幕分辨率并设置满屏显示效果 

点击(此处)折叠或打开

  1. /* Get the Screen Resolution */
  2.     GdkScreen* screen;
  3.     gint width, height;
  4.     screen = gdk_screen_get_default();
  5.     width = gdk_screen_get_width(screen);
  6.     height = gdk_screen_get_height(screen);
  7.     printf("screen width: %d, height: %d\n", width, height);

  8.     /* Create window and set full screen */
  9.     GtkWidget *window;
  10.     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  11.     gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  12.     gtk_window_set_default_size(GTK_WINDOW(window), width, height);
  13.     gtk_window_set_decorated(GTK_WINDOW(window), FALSE); /* hide the title bar and the boder */
事件回调函数的返回

点击(此处)折叠或打开

  1. 事件处理函数返回
  2.    TRUE表示事件已处理禁止进一步传播
  3.    FALSE表示事件消息进一步向上传播

CSS 控制界面显示
resource.xml

点击(此处)折叠或打开

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <gresources>
  3.   <gresource prefix="/images">
  4.     <file>bg.gif</file>
  5.   </gresource>
  6.   <gresource prefix="/ui">
  7.     <file>main_window.ui</file>
  8.   </gresource>
  9.   <gresource prefix="/theme">
  10.     <file>reset.css</file>
  11.     <file>theme_black.css</file>
  12.   </gresource>
  13. </gresources>
css示例. https://developer.gnome.org/gtk3/stable/chap-css-overview.html

点击(此处)折叠或打开

  1. @import url("resource://theme/reset.css");

  2. * {
  3.     transition-property: color, background-color, border-color, background-image, padding, border-width;
  4.     transition-duration: 1s;

  5.     font: 20px Cantarell;
  6. }

  7. window {
  8.     background-color: #000000;
  9. }

  10. button {
  11.     color: black;
  12.     background-color: #bbb;
  13.     border-style: solid;
  14.     border-width: 2px 0 2px 2px;
  15.     border-color: #333;

  16.     padding: 12px 4px;
  17. }
代码中使用

点击(此处)折叠或打开

  1. // 加载 主题. 设置主窗口的背景色为黑色.
  2.  GtkStyleProvider *provider;
  3.  provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ());
  4.  gtk_css_provider_load_from_resource (GTK_CSS_PROVIDER (provider), "/theme/theme_black.css");
  5.  //对 Window 及其子控件 应用主题.
  6.  apply_css (mainWindow, provider);
  7. static void apply_css (GtkWidget *widget, GtkStyleProvider *provider)
  8. {
  9.  gtk_style_context_add_provider (gtk_widget_get_style_context (widget), provider, G_MAXUINT);
  10.  if (GTK_IS_CONTAINER (widget))
  11.  gtk_container_forall (GTK_CONTAINER (widget), (GtkCallback) apply_css, provider);
  12. }
阅读(1915) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~