gtk设计简单的文本编辑器(3)

本文介绍了如何在现有软件中将颜色选择器组件更改为颜色选择按钮,并详细说明了如何处理颜色和字体变化的信号,包括使用`g_signal_connect`连接信号和自定义回调函数`bgSet`与`fontSet`进行颜色和字体的修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原来实现的更改颜色是用组合组件:颜色选择器。由于这个组建太大,不太布局,改成了颜色选择按钮,效果如下:

1.下面就介绍一下实现过程以及用到的函数:

color button有一个信号color-set,文档解释如下:

,当用户选择一个颜色,color-set信号发出。 处理这个信号时,使用 gtk_color_button_get_color() gtk_color_button_get_alpha() 得到颜色和透明度。

注意,这个信号时只发出 用户 改变了颜色。 如果您需要对编程颜色变化作出反应 ,使用通知::color-set。

信号可以写成下面:

g_signal_connect(colorbutton1, "color-set", G_CALLBACK(bgSet), NULL);

bgset回调函数是自己写的。

void bgSet(GtkWidget *widget, gpointer data)
{
     gtk_color_button_get_color(colorbutton1, &color1);
     gtk_widget_modify_bg(GTK_WIDGET(window1), GTK_STATE_NORMAL, &color1);
}

其中gtk_widget_modify_bg可以查看我的另一篇博客有详细介绍。

void  gtk_color_button_get_color  (GtkColorButton *color_button,  GdkColor  *color);利用这个函数来获得选择的颜色color。

背景色和字体颜色用的函数不一样:

gtk_widget_modify_bg和gtk_widget_modify_text区别自己看我的里一篇。

还有一个就是gtk_widget_modify_base也可以改变颜色。

2.字体按钮的设计

和color button差不多,注意的就是信号font-set。

,当用户选择一个字体,font-set信号发出。 处理这个信号时,使用 gtk_font_button_get_font_name() 得到选择的字体。

注意,这个信号发出只在 用户 更改字体。 如果你需要编程字体的变化做出反应 ,使用font-name信号。

g_signal_connect(fontbutton1, "font-set", G_CALLBACK(fontSet), NULL);

fontSet回调函数自己设计:

void fontSet(GtkWidget *widget, gpointer data)
{
    gchar *font;
    PangoFontDescription *font1;
    font = gtk_font_button_get_font_name(fontbutton1);
    font1 = pango_font_description_from_string(font);
    gtk_widget_modify_font(GTK_WIDGET(textview1), font1);

}

gtk_widget_modify_font函数看我的里一篇。

pango_font_description_from_string(font)函数得到字体,返回值是 PangoFontDescription类型,含有好多有关的函数,读者可以自己查看.

整个软件的代码,可以在github中下载。地址:

https://github.com/liuhuanone/gtk_editor

整体效果是:










转载于:https://my.oschina.net/liuxinquan/blog/486663

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值