TA的每日心情 | 无聊 2012-11-4 09:32 |
---|
签到天数: 2 天 连续签到: 1 天 [LV.1]初来乍到
|
我这是linux上的gtk3.4版本 例子是<The Foundations of GTK+ Development>里面的Event Boxes
其中有这么一句gdk_window_set_cursor(eventBox->window, gdk_cursor_new(GDK_HAND1));
编译命令是gcc `pkg-config --cflags --libs gtk+-3.0`
编译时提示GtkWidget下没有window成员 可是我在帮助文档下确实找到GtkWidget下有window这个这个属性啊
看了网上很多教程也是这样调用window的啊 怎么回事啊 求教!!!!
下面是源码:
#include <gtk/gtk.h>
static gboolean button_pressed(GtkWidget *, GdkEventButton *, GtkLabel *);
int main(int argc, char *argv[])
{
GtkWidget *window, *eventBox, *label;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Event Box");
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
gtk_widget_set_size_request(window, 200, 50);
eventBox = gtk_event_box_new();
label = gtk_label_new("Double-Clicked Me!");
gtk_event_box_set_above_child(GTK_EVENT_BOX(eventBox), FALSE);
g_signal_connect(G_OBJECT(eventBox), "button_press_event",
G_CALLBACK(button_pressed), (gpointer)label);
gtk_container_add(GTK_CONTAINER(eventBox), label);
gtk_container_add(GTK_CONTAINER(window), eventBox);
gtk_widget_set_events(eventBox, GDK_BUTTON_PRESS_MASK);
gtk_widget_realize(eventBox);
/*下面这一句错误event->window 编译提示GtkWidget 没有window成员
但是我查看GtkWidget类的成员确实发现有window属性啊*/
gdk_window_set_cursor(eventBox->window, gdk_cursor_new(GDK_HAND1));
gtk_widget_show_all(window);
gtk_main();
return 0;
}
static gboolean button_pressed(GtkWidget *eventbox, GdkEventButton *event,
GtkLabel *label)
{
if(event->type == GDK_2BUTTON_PRESS)
{
const gchar *text = gtk_label_get_text(label);
if(text[0] == 'D')
gtk_label_set_text(label, "I was double-clicked!");
else
gtk_label_set_text(label, "Double clicked me again");
}
return FALSE;
} |
|