Я недавно воскресил проект из десятилетия go (https://github.com/clancyj4/z80sim) и столкнулся с проблемами, связанными с переходом с поляны 2 на 3.
Одна проблема заключается в том, что я использую функцию lookup_widget, которая определена в поддержке. c поляной 2, но не определена на полянке 3. И я не знаю, как ее заменить.
An пример того, как я его использую:
void init_Code(GtkWidget *Main)
{
GtkWidget *widget;
PangoFontDescription *codefont;
codetext = lookup_widget(Main, "Code_Text");
code_textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(codetext));
Конечно, я разобрался с проблемой, но не понимаю ответа:
The preferred solution is to pass a pointer to your ENTRY as the user data pointer when you connect the signal, or, if you're using gtk_builder_connect_signals(), store a pointer to ENTRY in your class and pass the class as the user data pointer.
, который имел в виду to:
on_BT_OK_clicked(GtkButton *button, gpointer user_data)
{
//The line directly below is the one I get an error on
GtkWidget *entry = lookup_widget( GTK_WIDGET(button), "ENTRY" );
Любое разъяснение было бы наиболее полезным.
РЕДАКТИРОВАТЬ: Я почти уверен, что все сигналы связаны, потому что я использую это:
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "z80em2.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "Main"));
gtk_builder_connect_signals(builder, NULL);
Насколько я понимаю, codetext = lookup_widget(Main, "Code_Text")
возвращает указатель на GtkWidget, называемый Code_Text, под виджетом Main, и я не вижу, как это сделать в GTK3.