Пример использования webkitgtk с gtkmm 3.0

Я много искал, но не смог найти хорошего примера, объясняющего, как использовать webkitgtk с gtkmm 3.0.

Кто-нибудь знает об этом?
Есть ли хороший учебник или пример кода?

Заранее спасибо!

2

Решение

Я знаю, что этот вопрос довольно старый, но я сделал небольшую программу, используя webkitgtk а также gtkmm-3, Это может быть полезно для некоторых других людей, поэтому я делюсь этим:

#include <gtkmm.h>
#include <webkit2/webkit2.h>

int main( int argc
, char **argv
)
{
Glib::RefPtr<Gtk::Application> app = Gtk::Application::create( argc, argv, "" );

Gtk::Window window;
window.set_default_size( 800, 600 );

WebKitWebView * one =  WEBKIT_WEB_VIEW( webkit_web_view_new() );
/*
* the next line does some tricks :
* GTK_WIDGET( one ) -> convert WebKitWebView to GtkWidget (one->two)
* Glib::wrap( GTK_WIDGET( one ) ) -> convert GtkWidget to Gtk::Widget (two->three)
*/
Gtk::Widget * three = Glib::wrap( GTK_WIDGET( one ) );

window.add( *three );
webkit_web_view_load_uri(one, "http://stackoverflow.com/questions/17039942/example-of-using-webkitgtk-with-gtkmm-3-0");

window.show_all();

app->run( window );
exit( 0 );
}

Я не могу сказать, если это хороший способ сделать это, но пока это работает!

команда компиляции:

$ g++ main.cc `pkg-config gtkmm-3.0 --libs --cflags` `pkg-config webkit2gtk-4.0 --libs --cflags` -std=c++1

для пользователей MS Windows я не расист, но я не знаю, как компилировать в Windows. Любой комментарий будет признателен, я сделал этот кусок кода самостоятельно. Спасибо сообщить о любой ошибке.

вы должны увидеть что-то вроде этого:
введите описание изображения здесь

позаботиться об использовании версии webkit2gtk с помощью gtk3 в противном случае вы получите ошибку:

 (a.out:5783): Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported
6

Другие решения

На самом деле, это намного проще, так как Web View — это виджет. Минимальная реализация может выглядеть так:

class CWebView : public Gtk::Widget
{
public:

CWebView ()     //  Might want to protect this
: Gtk::Widget ((webkit_web_view_new()) {}
virtual ~CWebView () {};

operator WebKitWebView * () //  Allow this to stand in for a Web View
{   return WEBKIT_WEB_VIEW(gobj()); }

//  Wrap any functions you want to use like this:
void load_uri (const gchar *strUri)
{   webkit_web_view_load_uri(*this, strUri);    }
// Note that, thanks to the cast operator, *this can
// replace WebKitWebView pointers
};

Таким образом, соответствующие части приведенного выше кода будут:

CWebView   *pView = new CWebView;
window.add (*pView);
pView->load_uri ("http://stackoverflow.com/questions/17039942/example-of-using-webkitgtk-with-gtkmm-3-0");

Возможно, вы захотите защитить конструктор и добавить статическую функцию create (), чтобы убедиться, что она всегда выделяется с помощью new (), и вы можете разрешить ей «оборачивать» существующие объекты web_view вместо того, чтобы всегда выделять новый, но вы получаете картина.

1

По вопросам рекламы [email protected]