我差不多是一个gtk新手了,我正在寻找一种方法来获取gtk中当前主题的背景颜色。所以这段代码:
GdkColor color = gtk_widget_get_style(mainWindowHandle)->bg[GTK_STATE_NORMAL];
只有在显示主窗口后才会起作用,然后才会返回一个奇怪的丑陋灰色。
答案 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之前完美运行!