C++ 将webkitgtk与gtkmm 3.0一起使用的示例

C++ 将webkitgtk与gtkmm 3.0一起使用的示例,c++,gtkmm,webkitgtk,C++,Gtkmm,Webkitgtk,我搜索了很多,但是没有找到一个好的例子来解释如何在gtkmm 3.0中使用webkitgtk 有人知道吗? 是否有一些好的教程或示例代码 提前谢谢 我知道这个问题很老,但我只是用webkitgtk和gtkmm-3做了一个小程序。它可能对其他人有用,因此我与大家分享: #include <gtkmm.h> #include <webkit2/webkit2.h> int main( int argc , char **argv ) {

我搜索了很多,但是没有找到一个好的例子来解释如何在gtkmm 3.0中使用webkitgtk

有人知道吗? 是否有一些好的教程或示例代码


提前谢谢

我知道这个问题很老,但我只是用
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 );
}
对于微软的Windows用户来说,我不是种族主义者,但我不知道如何在Windows上编译。任何评论都是值得的,这段代码是我自己写的。Thx将报告任何错误

您应该看到如下内容:

注意使用
gtk3
webkit2gtk
版本,否则会出现错误:

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

实际上,它简单得多,因为Web视图是一个小部件。最低限度的实现可能如下所示:

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\u视图对象,而不是总是分配一个新的对象,但您会明白这一点。

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