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 ...
随机推荐
- UBuntu sudo 命令 :xxx is not in the sudoers file. This incident will be reported.
[1]分析问题 提示内容翻译成中文即:用户XXX(一般是新添加的用户名称)没有权限使用sudo. 解决方法修改新用户的权限,具体操作即修改一下/etc/sudoers文件. [2]切换至root用户模 ...
- 电脑已连接wifi的密码查询
有时候,想登陆自己家的无线网络(尤其朋友来家里突然要连接无线网络),脑子刹那间一片空白想不起来密码,怎么办呢? 其实,我们可以通过电脑来查看网络的密码,现在分享如何在笔记本电脑上查看连接过的无线网络密 ...
- kali长时间未使用导致数字签名过期无法更新源解决办法
kali长时间未使用,数字签名会过期,从而导致无法更新源. apt-get update:从源(Source)服务器那里下载最新的软件包列: apt-get upgrade:对已经安装的软件包本身进行 ...
- vs实现数据库数据迁移
public ActionResult About() { List<ChangeData.Models.old.adsinfo> adsinfo_new = new List<Mo ...
- flask 在模板中渲染错误消息
在模板中渲染错误消息 如果form.valicate_on_submit()返回False,说明验证没有通过,对于没有验证通过的字段,WTForms会把错误信息添加到表单类的errors属性中,这是一 ...
- python复习冒泡排序
冒泡排序: 思路: 先找到最大值放到最右边: #encoding=utf-8 a=[1,9,2,8,3,6,4] print "a before change:",a for i ...
- Spark With Mongodb 实现方法及error code -5, 6, 13127解决方案
1.spark mongo 读取 val rdd = MongoSpark.builder().sparkSession(spark).pipeline(Seq(`match`(regex(" ...
- Linux基础命令---间歇执行命令watch
watch watch指令可以间歇性的执行程序,将输出结果以全屏的方式显示,默认是2s执行一次.watch将一直运行,直到被中断. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS ...
- Codeforce 507B - Amr and Pins
Amr loves Geometry. One day he came up with a very interesting problem. Amr has a circle of radius r ...
- shell命令行快捷键
ctrl+a[A]:将光标移到命令行开头 ctrl+e[E]:将光标移到命令行结尾 ctrl+c[C]:强制终止命令执行 ctrl+u[U]:删除/剪切光标之前的所有字符 ctrl+y[Y]:粘贴ct ...