Gtk 窗口,控件,设置(添加图片等)
// 创建顶层窗体,后面有POPUP的
GtkWidget *main_window;
main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); // 设置title文字,注意UTF8格式的文字转换,否则是乱码
gtk_window_set_title (GTK_WINDOW (main_window), g_locale_to_utf8("哈哈",-,NULL,NULL,NULL)); // 设置窗体图标,用这条语句使所有窗体使用同一个图标,也有独立设置(GTK手册)
gtk_window_set_default_icon_from_file( ICON_WNDICON, NULL); // 设置边框宽度,基本随意
gtk_container_set_border_width (GTK_CONTAINER (main_window), ); // 设置模式窗口
gtk_window_set_modal(GTK_WINDOW (window), TRUE); // 让窗口总在最前
gtk_window_set_keep_above(GTK_WINDOW (window), TRUE); // 移动窗口位置
gtk_window_move(GTK_WINDOW (window), left, top);
// 也是设置位置的,简单点
gtk_window_set_position(GTK_WINDOW (main_window), GTK_WIN_POS_CENTER); // 这个让叉叉无效
gtk_window_set_deletable(GTK_WINDOW (main_window), FALSE);
//a)简单一点就用这个。
gtk_window_maximize(GTK_WINDOW (main_window)); //b)下面这个有边框但都给挤到屏幕外面了
gtk_window_fullscreen( GTK_WINDOW(main_window));
//c)采用设置窗体大小等于screen大小的办法,就是麻烦点
GdkScreen *screen; screen = gtk_window_get_screen( GTK_WINDOW( main_window));
gtk_window_set_default_size( GTK_WINDOW( main_window),
gdk_screen_get_width(screen),
gdk_screen_get_height(screen));
gtk_window_set_resizable(GTK_WINDOW(main_window),FALSE);
//或
gtk_window_set_policy(GTK_WINDOW(main_window), FALSE, FALSE, TRUE);
//(a)点击叉叉
gint delete_event (GtkWidget *widget, GdkEvent *event, gpointer data) g_signal_connect (G_OBJECT (main_window), "delete_event", G_CALLBACK (delete_event), NULL); //(b)窗口变化,gboolean返回TRUE就行了,继续执行默认过程,同下
gboolean window_state_event (GtkWidget *widget, GdkEventWindowState *event, gpointer user_data) g_signal_connect (G_OBJECT (main_window), "window_state_event", G_CALLBACK (window_state_event), main_window);
//(c)点击别的窗口
gboolean focus_out_event(GtkWidget *widget, GdkEventFocus *event, gpointer user_data) gtk_signal_connect (GTK_OBJECT(window), "focus-out-event", GTK_SIGNAL_FUNC(popuptoolbar_fout_event), window);
window = gtk_window_new(GTK_WINDOW_POPUP);
//用起来和这个差不多
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_decorated(GTK_WINDOW (window), FALSE);
GdkPixbuf *pixbuf;
GdkPixmap *pixmap; gtk_widget_set_app_paintable (main_window, TRUE);
gtk_widget_realize (main_window);
pixbuf = gdk_pixbuf_new_from_file (ICON_BGPIC, NULL);
gdk_pixbuf_render_pixmap_and_mask (pixbuf, &pixmap, NULL, );
gdk_window_set_back_pixmap (main_window->window, pixmap, FALSE);
g_object_unref (pixbuf);
g_object_unref (pixmap);
GdkPixbuf *pixbuf;
image = gtk_image_new_from_file (ICON_BGPIC);
pixbuf = gtk_image_get_pixbuf (GTK_IMAGE(image));
pixbuf = gdk_pixbuf_scale_simple(pixbuf,
gdk_screen_get_width(screen) - , // 16: window border SHIFT
gdk_screen_get_height(screen) - , // 140: height SHIFT
GDK_INTERP_BILINEAR);
gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf);
// 我放到fixed里了,这个随便
gtk_fixed_put(GTK_FIXED(fixed), image, , );
// 建立按钮
GtkWidget * button;
button = gtk_button_new (); // 简单一点的
button = gtk_button_new_with_label ("XX"); // 要产生那种能用键盘快捷键的按钮
button = gtk_button_new_with_mnemonic(g_locale_to_utf8("确定(_O)", -,NULL,NULL,NULL)); // 要好看一点就用一个图片的
// 函数产生一个hbox,然后把botton当作容器放进去,GTK的widget几乎都是容器,所以这个函数还是比较有用的,在产生toolbar的时候也用到。
GtkWidget * create_imagetext_hbox(const char *text,const char *image_path)
{
GtkWidget *box;
GtkWidget *label;
GtkWidget *image; image = gtk_image_new_from_file (image_path);
label = gtk_label_new (g_locale_to_utf8(text, -,NULL,NULL,NULL));
box = gtk_hbox_new (FALSE, );
gtk_container_set_border_width (GTK_CONTAINER (box), );
gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, );
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, ); gtk_widget_showall (box);
return box;
}
GtkWidget * create_image_button(const char *text,const char *image_path)
{
GtkWidget * button;
GtkWidget *box; box = create_imagetext_hbox(text, image_path); button = gtk_button_new ();
gtk_container_add (GTK_CONTAINER (button), box);
gtk_widget_show (button);
return button;
} // clicked信号定义
void user_function (GtkButton *button, gpointer user_data)
// 建立entry
GtkWidget *entry;
entry = gtk_entry_new (); // 让entry显示****
gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); // 让entry直接响应回车
gtk_signal_connect (GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(enter_event), usrdata); // 读/写entry,读出的数据指针指向entry的widget内部,不能直接释放。
gchar *gtk_entry_get_text (GTK_ENTRY (entry))
gtk_entry_set_text (GTK_ENTRY (entry), "XX")
// 简单一点
label = gtk_label_new("XX"); // 让label接受键盘快捷键,并聚焦到某widget
label = gtk_label_new_with_mnemonic (g_locale_to_utf8("输入(_I)", -,NULL,NULL,NULL));
gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); // 使用<span></span>控制显示
gtk_label_set_markup(GTK_LABEL(label), <span background='red'>"XXXX"</span>);
// -----------还有好多label用法,慢慢加
// 建立box
box = gtk_hbox_new (gboolean homogeneous, gint spacing);
// 或
box = gtk_vbox_new (gboolean homogeneous, gint spacing); homogeneous:TRUE,内部widget平均分配box空间,Widget大小不变,只是占地大了,其他地方padding;一般用FALSE即可,是否平均可在pack指定的widget时进行控制。
spacing:内部widget间的间隔,pixel单位。 // 结合gtk_container_set_border_width (GTK_CONTAINER (box), 8);效果也不错。 // Pack指定widget到box中
gtk_box_pack_start (GtkBox *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding);
//或
gtk_box_pack_end (GTK_BOX (box), widget, FALSE, FALSE, );
X. treeview => LGX_storeview
lgx_storeview的说明和代码 X. toolbar X. calendar X. inputdialog
gtk_widget_set_usize(widget, x, y);
gtk_widget_set_sensitive(widget, FALSE);
2 gtk_misc_set_alignment(GTK_MISC(label), , ); 4 PangoFontDescription *fontdesc;
fontdesc = pango_font_description_from_string("uming 15");
6 gtk_widget_modify_font(treeview, fontdesc);
pango_font_description_free(fontdesc);
fontdesc = pango_font_description_from_string("uming");
pango_font_description_set_size (font_desc, *PANGO_SCALE);
widget->allocation.x
widget->allocation.y
widget->allocation.height
widget->allocation.width
Gtk 窗口,控件,设置(添加图片等)的更多相关文章
- 在RichTextBox控件中添加图片和文字
public void SetText(RichTextBox rtb) { rtb.Text = "在RichTextBox控件中添加图片和文字" + Environment.N ...
- Android控件上添加图片
项目中有一个点赞功能,点赞的小图标添加在点赞列表旁边,在xml里可以进行设置,也可以在代码中进行绘图. 下面是两种方法的设置: 1.xml里:一些控件:button.textView等等里面有个属性是 ...
- 基本控件设置边角图片 drawableleft
btn.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon_galley_comment, 0, 0,0); 四个参数分别是左上右下四个方向 ...
- swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)
swing实现QQ登录界面1.0( 实现了同一张图片只加载一次).(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件) 代码思路分析: 1.(同一张图片仅仅需要加载一次就够了,下 ...
- 双缓冲绘图和窗口控件的绘制——ATL ActiveX 窗口控件生成向导绘制代码OnDraw的一个错误 .
双缓冲绘图和窗口控件的绘制 ---ATL ActiveX 窗口控件生成向导绘制代码OnDraw的一个错误 cheungmine 我们通常使用ATL COM组件,生成一个带窗口的ActiveX控件,然后 ...
- 对话框上动态控件的创建、在Picture Control控件上显示图片
1 MFC对话框之上的动态控件的创建 对话框上的控件是MFC类的一个具体对象. 当在对话框之上使用静态控件时,可以根据类向导来为每个控件添加消息.响应函数以及变量. 当需要在对话框中动态的创建某个控 ...
- PowerBuilder学习笔记之8.5高级窗口控件
1.列表框控件 列表框控件(ListBox).图片列表框控件(PictureListBox).下拉列表框控件(DropDownListBox)以及下拉图片列表框控件(DropDownPictureLi ...
- 在GridControl控件上绑定图片的几种操作方式
我们知道,基于DevExpress的开发Winform的项目界面的时候,GridControl控件是经常用来绑定数据的,一般以常规的字符内容为主,有时候也会有图片的显示需要,那么如果显示图片,我们应该 ...
- c#学习笔记之使用 TableLayoutPanel 控件设置窗体布局
使用 TableLayoutPanel 控件设置窗体布局 在 Visual Studio IDE 左侧,找到“工具箱”选项卡. 选择“工具箱”选项卡,随即将显示工具箱.(或者,在菜单栏上,依次选择“视 ...
- firefox扩展开发(二):用XUL创建窗口控件
firefox扩展开发(二):用XUL创建窗口控件 2008-06-11 16:57 1.创建一个简单的窗口 <?xml version="1.0"?> <?xm ...
随机推荐
- 转:【专题五】TCP编程
前言 前面专题的例子都是基于应用层上的HTTP协议的介绍, 现在本专题来介绍下传输层协议——TCP协议,主要介绍下TCP协议的工作过程和基于TCP协议的一个简单的通信程序,下面就开始本专题的正文了. ...
- golang学习笔记8 beego参数配置 打包linux命令
golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/mvc/contro ...
- byte以及UTF-8的转码规则
https://www.cnblogs.com/hell8088/p/9184336.html 多年来闲麻烦,只记录笔记,不曾编写BLOG,本文为原创,如需转载请标明出处 废话不说,直奔主题 asci ...
- javanio2
package com.lanhuigu.nio.selector; import java.net.InetSocketAddress; import java.nio.ByteBuffer; im ...
- 自制TFT-Usart通信小项目资料打包
2010-05-08 15:05:00 用orcad画的原理图如下.
- hiho一下 第148周
题目1 : Font Size 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Steven loves reading book on his phone. The b ...
- OpenGL读取帧缓存数据
https://blog.csdn.net/niu2212035673/article/details/80251949 简述有些时候我们可能需要获取渲染后的图像数据,比较常用的函数是glReadPi ...
- URL的解析,C语言实现
源: URL的解析,C语言实现 c语言实现urlencode和decode
- Golang操作结构体、Map转化为JSON
结构体生成Json package main import ( "encoding/json" "fmt" ) type IT struct { Company ...
- Python3 freetds.conf odbcinst.ini odbc.ini 之间的关系
Python3 freetds.conf odbcinst.ini odbc.ini 之间的关系 三者分别是FreeTDS和UnixODBC的配置文件: 1,FreeTDS中的freetds.conf ...