简体   繁体   English

如何更改Gtk2条目中的字段背景颜色?

[英]How can I change the field background color in Gtk2 entry?

GTK+ v2 in C using Code::Blocks on Win7. 在Win7上使用Code :: Blocks在C中使用GTK + v2。

I am using the "insert_text" signal for a callback to an entry widget. 我正在使用“ insert_text”信号来回调条目小部件。

Inside the callback function, how do I change the entry field background color? 在回调函数中,如何更改输入字段的背景色?

I think this is not the same as changing the widget color. 我认为这与更改小部件颜色不同。

My code: 我的代码:

The Callback... 回调...

static void VerifyDOW (GtkEntry    *entry,
                          const gchar *text,
                          gint         length,
                          gint        *position,
                          gpointer     data)
{
GtkEditable *editable = GTK_EDITABLE(entry);
const gchar *result = gtk_editable_get_chars (editable, 0, -1); // = g_new (gchar, length);
int i, count = strlen(result);

    for (i=0; i < count; i++) {
        if ((! isdigit(result[i])) & (result[i] != ',')) {
            i = count;
            g_signal_handlers_block_by_func (G_OBJECT (editable), G_CALLBACK (VerifyDOW), data);

            /* CHANGE FIELD, NOT WIDGET, COLOR HERE */

            g_signal_handlers_unblock_by_func (G_OBJECT (editable), G_CALLBACK (VerifyDOW), data);
        }
    }
    g_signal_stop_emission_by_name (G_OBJECT (editable), "insert_text");
    g_free (result);
}

Now in Main()... 现在在Main()中...

        entry = gtk_entry_new();
        gtk_widget_set_tooltip_text (entry, "Valid input, 1..7 and ,");
        gtk_entry_set_text(GTK_ENTRY(entry), "1,3,5");

        g_signal_connect(G_OBJECT(entry), "insert_text", g_CALLBACK(VerifyDOW), NULL);

        gtk_table_attach(GTK_TABLE(table), entry...

Thanks, Mark. 谢谢马克。

Try gtk_widget_modify_base: 尝试gtk_widget_modify_base:

GdkColor color = {0, 255<<8, 220<<8, 220<<8};
gtk_widget_modify_base(GTK_WIDGET(entry), GTK_STATE_NORMAL, &color);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM