Tag: gtk

我如何理解以下含义?

引自这里 : if (to_end) { /* If we want to scroll to the end, including horizontal scrolling, * then we just create a mark with right gravity at the end of the * buffer. It will stay at the end unless explicitely moved with * gtk_text_buffer_move_mark. */ gtk_text_buffer_create_mark (buffer, “end”, &iter, FALSE); /* Add scrolling […]

获取错误Xlib:显示“:24.0”时缺少扩展名“RANDR”。 GTK

我收到这个错误,不知道为什么……请看看我的按钮数组,也许我搞砸了那里,我不确定…我得到的错误是: Xlib: extension “RANDR” missing on display “:24.0”. 之后没有任何事情发生,这意味着我的计划根本没有运行…. #include /* Our new improved callback. The data passed to this function * is printed to stdout. */ static void callback (GtkWidget *widget, gpointer data) { system ((gchar *) data); } /* another callback */ static gboolean delete_event (GtkWidget *widget, GdkEvent *event, gpointer data) { gtk_main_quit […]

GDK信号,按键和按键掩码

我试图抓住用户键在GUI窗口上按Ctrl + d退出。 我的代码如下所示: static gboolean callback(GtkWidget *widget, GdkEventKey *event, gpointer data) { if(event->state == GDK_CONTROL_MASK && event->keyval == ‘d’) gtk_main_quit(); return FASLE; } 这适用于我的笔记本电脑(Ubuntu 11.04,gcc 4.5.2,libgtk 2.24.4)。 但是当我在一个较新的系统(Ubuntu 12.10,gcc 4.7.2,libgtk 2.24.13)上做同样的事情时,它不起作用。 我添加了g_print(“%u\n”, event->state); 在if语句之前,它显示当我按下Ctrl ,文档中的event->state为20而不是4或1 << 2。 如果我将GDK_CONTROL_MASK更改为20,它适用于较新的系统,但不适用于较旧的系统。 有人请告诉我为什么会发生这种情况以及如何解决这个问题。

如何在gtk + c中回调之间进行通信

我正在研究一个项目,我试图通过向它们传递相同的变量(回调共享相同的变量)使2个回调相互通信。 由于回调函数不能返回值,因此我传递了一个指向主循环(main函数)中赋值的指针。 但是,它根本不起作用! 这是我的代码: #include static void inc_val (GtkWidget *widget, gpointer data) { int* value = data; *value++; printf(“value is: %d\n”, *value); } static void inc_val_ten (GtkWidget *widget, gpointer data) { int* value = data; *value+=10; printf(“value is: %d\n”, *value); } static void activate (GtkApplication *app, gpointer user_data) { GtkWidget *window; GtkWidget *grid; GtkWidget *button; […]

gtk-get在liststore treeview中单击哪个项目

我想获取在树视图中单击的项目,这会导致“行激活”事件。 我在树视图中有一个列表存储。 单击其中的任何项目将显示另一个列表。 但是我怎么知道点击了哪个项目? 我怎么找到的? 码- GtkWidget * init_tree() { GtkListStore *liststore = gtk_list_store_new(1, G_TYPE_STRING); GtkTreeIter treeiter; gtk_list_store_append(liststore, &treeiter); gtk_list_store_set(liststore, &treeiter, 0, “Register”, -1); gtk_list_store_append(liststore, &treeiter); gtk_list_store_set(liststore, &treeiter, 0, “New Configuration”, -1); gtk_list_store_append(liststore, &treeiter); gtk_list_store_set(liststore, &treeiter, 0, “Edit Configuration”, -1); gtk_list_store_append(liststore, &treeiter); gtk_list_store_set(liststore, &treeiter, 0, “Delete Configuration”, -1); gtk_list_store_append(liststore, &treeiter); gtk_list_store_set(liststore, &treeiter, 0, “Add location […]

无法使用GTK编译代码

我想学习使用GTK3,但我无法编译第一个例子。 我安装了MSYS2并运行: pacman -S mingw-w64-x86_64-gtk3 其次是: pacman -S mingw-w64-x86_64-glade 和: pacman -S mingw-w64-x86_64-devhelp 我在c:\MSYS64安装它,这是默认位置,但是当我尝试运行时 gcc `pkg-config –cflags gtk+-3.0` -o example-0 example-0.c `pkg-config –libs gtk+-3.0` 编译Simple Window教程 #include static void activate (GtkApplication* app, gpointer user_data) { GtkWidget *window; window = gtk_application_window_new (app); gtk_window_set_title (GTK_WINDOW (window), “Window”); gtk_window_set_default_size (GTK_WINDOW (window), 200, 200); gtk_widget_show_all (window); } int main […]

更改GtkWindow时更改GtkButton颜色

我正在尝试一个简单的示例Gtk程序并使用GtkTable来对齐我的小部件。 我的布局应该是: 窗口背景是黑色的。 按钮应为白色,而按钮上的文本应为黑色。 所有标签都应该是白色的,以便可以在黑色窗口背景下看到它们。 考虑到这一点。 这是我到目前为止所做的。 码: #include #include #include /* for atoi() and exit() */ #include /* standard in and output*/ typedef struct cmd_widgets{ GtkWidget *button1; GtkWidget *combo; GtkWidget *label; }my_cmd_widgets; static gboolean close_application( GtkWidget *widget, GdkEvent *event, gpointer data ) { gtk_main_quit (); return FALSE; } static void UpdateChoice( GtkWidget *widget, gpointer […]

如何使用GTK + / Cairo旋转图像

我有一个简单的应用程序,应该使用GTK+和Cairo每隔x毫秒旋转一个装饰轮。 我在下面有一些代码从计时器调用cairo_rotate() 。 但是,图像不会改变。 我是否必须使图像无效以使曝光事件触发? 我对开罗这么新,一个简单的例子演示如何在GTK+使用Cairo旋转图像将受到高度赞赏。 #include #include cairo_surface_t *image; cairo_t *cr; gboolean rotate_cb( void ) { cairo_rotate (cr, 1); //cairo_paint(cr); printf(“rotating\n”); return( TRUE ); } static gboolean on_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) { cr = gdk_cairo_create (widget->window); cairo_set_source_surface(cr, image, 0, 0); cairo_paint(cr); printf(“Paint\n”); //cairo_destroy(cr); return FALSE; } int main(int argc, char *argv[]) { […]

ld抱怨:在函数“_start”中,未定义引用“__libc_csu_fini”和“__libc_csu_init”

我用clang而不是gcc编译了一个GTK +程序。 到目前为止这么好,除了我没有正确的ld链接。 原来的makefile叫做gcc来做链接,如下所示: gcc -g -O2 -export-dynamic -o my_application somefile.o another.o -pthread -lgnomeui-2 -lSM -lICE -lbonoboui-2 -lgnomevfs-2 -lgnomecanvas-2 -lgnome-2 -lpopt -lbonobo-2 -lbonobo-activation -lORBit-2 -lart_lgpl_2 -lgconf-2 -lglade-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lxml2 -pthread -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lxml2 -lgthread-2.0 -lrt -lglib-2.0 如果我只是在上面的命令中用gng替换gcc ,我会从后者那里得到这个警告: clang:warning:编译过程中未使用的参数:’ […]

Gtk + / X11:有和没有复合管理器的半透明窗口?

我需要一些代码来制作我的窗口(最好是所有小部件)半透明。 我知道我可以使用gtk_window_set_opacity(),但它只在复合管理器运行时才有效,但如果没有呢? 我已经google了很多,发现很多代码甚至没有编译,不起作用或只是一个概念certificate。 没有充实的解决方案。 我不想乱用X11 Xlib糟糕的API(我只是没时间学习它)。 哪里可以获得这样的库/代码片段?