获取gtk主题背景颜色

时间:2010-06-14 09:34:20

标签: c gtk

我差不多是一个gtk新手了,我正在寻找一种方法来获取gtk中当前主题的背景颜色。所以这段代码:

GdkColor color = gtk_widget_get_style(mainWindowHandle)->bg[GTK_STATE_NORMAL];

只有在显示主窗口后才会起作用,然后才会返回一个奇怪的丑陋灰色。

2 个答案:

答案 0 :(得分:3)

尝试附加小部件的“实现”信号,然后获取所需的样式信息。

static void
widget_realized_cb (GtkWidget *widget) {
  GdkColor *color = NULL;
  GtkStyle *style = gtk_widget_get_style (widget);

  if (style != NULL) {
    color = style->bg[GTK_STATE_NORMAL];

    /* Do whatever you want with it here */
  }
}

void foobar () {
  g_signal_connect (mainWindowHandle,
                    "realize",
                    G_CALLBACK (widget_realized_cb),
                    NULL);
}

答案 1 :(得分:-2)

我添加了

gtk_widget_realize(mainWindowHandle);

在gtk_widget_get_style之前完美运行!