- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 GTK+ 的新手,我不明白我的回调函数有什么问题。你能帮帮我吗?
我想改变我的盒子方向,但我的盒子指针在我的回调函数中是错误的。
我的代码:
#include <gtk/gtk.h>
#include <stdio.h>
void flip_buttons(GtkWidget *window, gpointer user_data) {
gtk_orientable_set_orientation(
GTK_BOX(user_data),
GTK_ORIENTATION_VERTICAL);
}
int main (int argc, char **argv)
{
GtkWidget *window;
GtkWidget *box;
GtkWidget *button;
GtkWidget *button2;
gtk_init (&argc,&argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
button = gtk_button_new_with_label ("Btn A");
button2 = gtk_button_new_with_label ("Btn B");
gtk_container_add (GTK_CONTAINER(window), box);
gtk_box_pack_start (GTK_BOX (box), button, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (box), button2, TRUE, TRUE, 0);
gtk_widget_show_all (window);
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
GClosure* closure_flip_buttons =
g_cclosure_new(G_CALLBACK(flip_buttons), box, 0);
// Set up the accelerator group.
GtkAccelGroup* accel_group = gtk_accel_group_new();
gtk_accel_group_connect(accel_group,
GDK_KEY_F,
GDK_CONTROL_MASK,
0,
closure_flip_buttons);
gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
gtk_main();
return 0;
}
编译时出错:
gtk_accel_error.c: In function ‘flip_buttons’:
/usr/include/glib-2.0/gobject/gtype.h:2277:6: warning: passing argument 1 of ‘gtk_orientable_set_orientation’ from incompatible pointer type [-Wincompatible-pointer-types]
((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
/usr/include/glib-2.0/gobject/gtype.h:482:66: note: in expansion of macro ‘_G_TYPE_CIC’
#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type) (_G_TYPE_CIC ((instance), (g_type), c_type))
^~~~~~~~~~~
/usr/include/gtk-3.0/gtk/gtkbox.h:40:34: note: in expansion of macro ‘G_TYPE_CHECK_INSTANCE_CAST’
#define GTK_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_BOX, GtkBox))
^~~~~~~~~~~~~~~~~~~~~~~~~~
最佳答案
根据 GTK+ documentation ,您的闭包签名必须是:
gboolean
(*GtkAccelGroupActivate) (GtkAccelGroup *accel_group,
GObject *acceleratable,
guint keyval,
GdkModifierType modifier);
我认为这意味着您的函数需要看起来像这样:
gboolean flip_buttons(GtkAccelGroup *accel_group,
GObject *acceleratable,
guint keyvalue,
GdkModifierType modifier,
gpointer user_data)
{
gtk_orientable_set_orientation(
GTK_ORIENTABLE(user_data),
GTK_ORIENTATION_VERTICAL);
return TRUE;
}
但是,您可能需要尝试一下。该警告表明您的 user_data——调用中的第二个参数——是一个 GtkAccelGroup。但我认为签名中的第二个参数最终会成为窗口,所以我不知道。
关于c - Gtk+ accel组回调函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56681618/
我正在尝试添加身份验证以仅允许有效用户从 nginx 下载静态文件。 这是我的 Nginx 配置: location ^~ /download-logs { internal; ali
这是我在 nginx 上的“内部”设置: location /issues/ { root /home/some_user/some_project/; internal; } 当我注
我使用 nginx x-accel-redirect 作为外部资源的身份验证前端。 在我的 python 代码中,我将执行以下操作: /获取资源/ def view(self, req, resp):
我使用 nginx x-accel-redirect 作为外部资源的身份验证前端。 在我的 python 代码中,我将执行以下操作: /获取资源/ def view(self, req, resp):
据我了解,这 3 个字段的单位是弧度/秒。它们非常适合跟踪 3D 运动,但不适合单独使用(无需校准)。 所以想法似乎是使用 Accel+Magnetic 生成矩阵,但由于这不准确,您使用陀螺仪数据对数
我正在尝试为 Gedit 3 编写一个使用 GObject 自省(introspection)的小插件。下面显示的代码的相关部分旨在建立一个环境,然后我可以在该环境中适应按钮回调中的函数。但是,按钮的
到目前为止,我一直在摸索着保护 Django 的媒体文件,但没有成功!我只是想让它只有管理员用户才能访问媒体文件夹。这是我的 Nginx 文件。 server { listen 80;
我正在尝试从非公共(public)目录提供文件,但一点乐趣都没有。 server { listen 80; listen [::]:80; root /websites/testing.com; in
我将我的网站分为公共(public)区域和私有(private)区域。所有静态文件都将由 nginx 提供。 Nodejs 仅检查凭据并在成功时设置 X-Accel-Redirect-Header。问
要对 passenger 使用 Nginx 的 X-Accel-Redirect 功能,显然您使用 passenger_set_header,如果映射到另一个位置,则使用 passenger_set_
我在Nginx中使用X-Accel-Redirect在Rails中提供受限下载。为了验证我在客户端应用中的下载,我正在尝试将非标准HTTP header Content-MD5中的校验和发送到X-Ac
我想将 Nginx X-Accel 与 Symfony 一起使用,目前我已经有了这段代码。 $request->headers->set('X-Sendfile-Type', 'X-Accel
These are the docs for X-Accel-Limit-Rate : Sets the rate limit for this single request. Off means u
我正在开发一个 Web 应用程序,X-Accel-Redirect header 只能在没有扩展名的文件中正常工作。出于某种原因,如果我向文件名添加扩展名,X-Accel-Redirect 将不起作用
我正在尝试使用G++ 9.3.0编译以下简单的OpenMP GPU卸载程序: #include int main(){ const int N=1000; int d[N]; for(a
我正在尝试为我在 Ubuntu 上开发的程序连接一些键绑定(bind)。键绑定(bind)本身是有效的,但是 wxPython 菜单似乎无法将 Numpad 键映射到加速表,因此热键组合出现在菜单项旁
您好,我希望用户能够从我配置了 nginx PHP 的服务器 (Windows) 下载 PDF 文件。这是我的 nginx.conf(服务器 block ) http { include
我正在尝试在 node.js 支持的 nginx 上设置授权文件访问。出于某种原因,所有示例都不适合我。我正在尝试从 /data/private/files 服务器文件 我的 nginx 配置: ..
阅读this article在 nginx 网站上,我有兴趣使用 X-Accel-重定向 Apache 或 Lighttpd 用户可能使用 的方式X-Sendfile 头来帮助处理大文件。 最tuto
我们正在迁移到 kubernetes,我们对它是全新的。 在我们当前的单一服务设置中,我们有:Nginx -> Web 应用程序。通过这种方式,我们可以在 Web 应用程序中通过身份验证来保护一些静态
我是一名优秀的程序员,十分优秀!