Я начинаю с разработки GTK, и я изо всех сил.
Это первое приложение заняло у меня 4 часа, я хотел бы знать сейчас, если я уже делаю слишком много очевидных ошибок?
В основном я хочу спросить, как мне перевести этот код на GTK3?Это дает мне ошибку:
‘GTK_OBJECT’ was not declared in this scope
Если я пытаюсь скомпилировать против GTK3 вместо GTK2, то есть:
pkg-config --cflags --libs gtk+-3.0
#include <gtk/gtk.h>
static int click_counter = 0;
void greet ( GtkWidget * widget, gpointer data )
{
g_print ( "My first GTK app!\n" );
g_print ( "%s clicked %d times\n", (char*) data, ++click_counter );
}
void destroy ( GtkWidget * widget, gpointer data )
{
gtk_main_quit ();
}
int main ( int argc, char * argv[] )
{
GtkWidget * main_window;
GtkWidget * counter_button;
gtk_init( & argc, & argv);
main_window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
g_signal_connect (main_window, "destroy", G_CALLBACK (destroy), NULL);
gtk_container_set_border_width ( GTK_CONTAINER ( main_window ), 30 );
counter_button = gtk_button_new_with_label ("Click me!");
g_signal_connect ( GTK_OBJECT(counter_button), "clicked", G_CALLBACK (greet), NULL ); // last param counter_button ?
gtk_container_add ( GTK_CONTAINER (main_window), counter_button );
gtk_widget_show_all ( main_window );
gtk_main ();
return 0;
}
Я компилирую, используя Makefile, основная часть:
CXX := g++-8
CXXFLAGS := -std=c++17 -Wall -Wextra -Wc++11-compat # -Werror -Wpedantic -pedantic-errors
LDLIBS := $$( pkg-config --cflags --libs gtk+-2.0 )
PROJECT := firstGTK
BINARY := $(PROJECT)
SOURCE := $(PROJECT).cpp
$(BINARY): $(SOURCE)
$(CXX) $(CXXFLAGS) $(SOURCE) -o $(BINARY) $(LDLIBS)