我正在一个网页浏览器上寻找乐趣,并遇到了这个问题。
这样做是可行的:
#include <webkit/webkit.h>
void init() {
GtkWidget *web_view = webkit_web_view_new();
g_signal_connect(
G_OBJECT(GTK_WIDGET(this->web_view)),
"notify::progress",
G_CALLBACK(LoadChangedProxy),
NULL);
webkit_web_view_load_uri(WEBKIT_WEB_VIEW(this->web_view), "http://google.com");
}
void LoadChangedProxy(GtkWidget *view, GParamSpec *pspec, gpointer p) {
puts("LOADING");
}在这种情况下,永远不会调用回调:
#include <webkit2/webkit2.h>
void init() {
GtkWidget *web_view = webkit_web_view_new();
g_signal_connect(
G_OBJECT(GTK_WIDGET(this->web_view)),
"notify::estimated-load-progress",
G_CALLBACK(LoadChangedProxy),
NULL);
webkit_web_view_load_uri(WEBKIT_WEB_VIEW(this->web_view), "http://google.com");
}
void LoadChangedProxy(GtkWidget *view, GParamSpec *pspec, gpointer p) {
puts("LOADING");
}我一开始试着使用webkitgtk2,实际上我的头撞到了墙上。我切换到了旧的webkitgtk1头和api,它神奇地开始工作了。我不知道什么会导致这一点,此外,没有错误被打印到stderr或stdout (例如。试图连接到对象没有的信号)。
有什么建议吗?令人惊讶的是,关于g_signal_connect的文档很少,来自glib。我所知道的都来自于一些gnome应用程序的源代码。
编辑:我发现在webkitgtk2情况下使用“Notific::progress”信号标识符,回调是有效的。但是,我不能使用webkit_web_view_get_progress()或webkit_web_view_get_estimated_load_progress()来读取进度值来显示它。
发布于 2015-01-26 07:46:04
这些症状非常奇怪,我只能想出一个解释:您仍然在链接webkit-gtk。使用这种简单的代码,您不会碰巧碰到链接问题,但是当然,新的信号也不会出现。
https://stackoverflow.com/questions/28145018
复制相似问题