c++ - 混合 gtk+ 和 c++

标签 c++ c linux gtk

在 gtk+ 中使用 c++ 编程时是否有任何理由使用特殊绑定(bind)?由于 c++ 是 C 的超集,为什么不能使用具有用于回调事件的静态成员的类并将 c 样式的 gtk+ 对象封装在这样的类中:

class MainWindow{
    public:
         MainWindow(void);
         GtkWidget* window;
         GtkWidget* button;
         static void signals(GtkWidget *widget, GdkEventButton *event, gpointer callback_data);
         static gboolean onDelete(GtkWidget *widget, GdkEvent *event, gpointer data);
         static void onDestroy(GtkWidget *widget, gpointer data);
         /* GtkWidget* canvas;
         GtkWidget* items; */

     };

和施工时完成的信号连接:

MainWindow::MainWindow(){
// Create widgets
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        button = gtk_button_new_with_label("Push the button.");
// Connect widget signals
        g_signal_connect(G_OBJECT(button), "button_press_event", G_CALLBACK(signals), NULL);
// Add widgets to main window (pack multiple widgets)
        gtk_container_add(GTK_CONTAINER(window), button);
// Show window
        gtk_widget_show_all(window);
// Connect Main Window Signals
        g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(onDelete), NULL);
        g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(onDestroy), NULL);

然后在设置 gtk+ 调用后在 Main 中创建类:

int main(int argc, char* argv[])
      {

    // initialize GTK
        gtk_init(&argc, &argv);
        gdk_rgb_init();
    // Create Main Window...
        MainWindow win;
    // Listen
        gtk_main();
        return 0;
      }

构造函数可以为初始大小和位置以及任何其他选项获取参数...

是我把它弄得太简单了还是我读过的所有其他东西让它太难了?

最佳答案

你可以这样做。

如果您喜欢 C++ 接口(interface),GTK 也已经提供了一个 C++ 包装器。

它叫做 gtkmm .

关于c++ - 混合 gtk+ 和 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14801686/

相关文章:

css - 如何将键绑定(bind)添加到 gtk3 应用程序?

objective-c - 为什么此 C 代码中的结构有两个名称?

linux - .deb 包 conffiles 问题

linux - tomcat访问日志获取我的eth0 ip?

php - 无法在php中写入txt文件

C++ delete 在某些实例上崩溃

c++ - 如何设置窗口的默认位置?

c++ - 检查#include 是否已经声明

c++ - 指针和指针的地址如何共享相同的内存地址?

java - byte到int类型转换网络应用