代码之家  ›  专栏  ›  技术社区  ›  Syco

GtkWindow类

  •  1
  • Syco  · 技术社区  · 15 年前

    main.cc

    #include "mWindow.h"
    using namespace std;
    int main( int argc, char* argv[] ) {
        gtk_init( &argc, &argv );
        mWindow win = mWindow();
        gtk_main();
        return 0;
    }
    

    mWindow.cc

    #include "mWindow.h"
    mWindow::mWindow() {
        gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title (this, "my window");
        gtk_widget_show_all (GTK_WIDGET(this));
    }
    

    姆温杜.h

    #ifndef MWINDOW_H_INCLUDED
    #define MWINDOW_H_INCLUDED
    #include <gtk/gtk.h>
    using namespace std;
    class mWindow : public GtkWindow {
        public:
            mWindow();
    };
    #endif
    
    2 回复  |  直到 15 年前
        1
  •  2
  •   Greg S    15 年前

    我建议你看看 ( http://www.gtkmm.org/ 如果你想使用GTK+和C++,也就是说,不需要尝试重新创建轮子,并且为GTK+(这是C库)编写自己的C++接口。

        2
  •  0
  •   Syco    15 年前

    谢谢, 我试图使用C库,就像它们是C++一样。 我就是这样用gtkmm解决的: main.cc

    #include <gtkmm/main.h>
    #include "examplewindow.h"
    
    int main(int argc, char *argv[])
    {
      Gtk::Main kit(argc, argv);
      ExampleWindow window;
      Gtk::Main::run(window);
      return 0;
    }
    

    示例window.h

    #ifndef GTKMM_EXAMPLEWINDOW_H
    #define GTKMM_EXAMPLEWINDOW_H
    
    #include <gtkmm-2.4/gtkmm.h>
    
    class ExampleWindow : public Gtk::Window {
        public:
            ExampleWindow();
    };
    
    #endif //GTKMM_EXAMPLEWINDOW_H
    

    examplewindow.cc

    #include "examplewindow.h"
    
    ExampleWindow::ExampleWindow() {
        set_title("Gtk::TextView example");
        set_border_width(5);
        set_default_size(400, 200);
        show_all_children();
    }
    

    还要添加命令以成功完成,至少在Arch Linux上是这样:

    g++ $(pkg-config --cflags --libs gtkmm-2.4) main.cc examplewindow.cc examplewindow.h -o executable
    

    另一个小提示,我应该用什么作为动态数组或向量以及hashmap?

    推荐文章