Как получить 2 текстента в gtk3 - PullRequest
0 голосов
/ 04 мая 2019

Я уже 2 недели ищу Google.2 текстента в гриде.(ex: userid, password) Glade позволил мне спроектировать это без проблем ...

Для одного текстового виджета это работает.

Я собираю / связываю с MySQL, поэтому я хотел быфункции вызова, хранимые процедуры с entry1 и entry2.

Пожалуйста, помогите спасибо

: РЕДАКТИРОВАТЬ: 15:18 4 мая 2019

Я нашел окончательное решение.(Но это вызывает ошибку seg) следующий фрагмент кода:

это своего рода транскрипция видео в текст (код C).

https://www.youtube.com/watch?v=_yTmW1QG3uk

очевидно, в соответствии с моей целью действительно ...

это вроде работает, но допустим, вы хотите использовать один и тот же экземпляр во второй раз, "ошибка сегмента"

Я уверен, что найдупроблема (gtk_main_quit) или что-то, но текстовые строки кратны решен: P

вот код:

#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>
#include <mysql/mysql.h>


GtkEntry *userid, *password;

static void Button_Pressed(GtkWidget *w, gpointer *data){

/*   char *userid, *password;*/  //seg fault

/*   userid[0]='\0';
   password[0]='\0';*/

   userid=gtk_entry_get_text(userid);
   password=gtk_entry_get_text(password);


   g_print("%s\n\r%s\n\r",userid, password);

}

static void CreateWindow(GtkApplication *myapp, gpointer *user_data){

   GtkWidget *window;

   window=gtk_application_window_new(myapp);
   gtk_window_set_title(GTK_WIDGET(window), "Double Entry Solution");
   gtk_window_set_default_size(GTK_WINDOW(window),400,400);

   GtkWidget *vbox=gtk_vbox_new(FALSE,0);
   gtk_container_add(GTK_CONTAINER(window), vbox);
   gtk_widget_show(vbox);


   // userid pack
   userid=gtk_entry_new();
   gtk_box_pack_start(GTK_CONTAINER(vbox), userid, TRUE, TRUE,0);
   gtk_widget_show(userid);


   GtkWidget *hbox=gtk_hbox_new(TRUE,0);
   gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);

   // password pack
   password=gtk_entry_new();
   gtk_box_pack_start(GTK_BOX(hbox), password, TRUE, TRUE,0);
   gtk_widget_show(password);

   GtkWidget *submit=gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
   gtk_box_pack_start(GTK_BOX(vbox), submit, TRUE, TRUE,0);

   GtkWidget *button=gtk_button_new_with_label("Login");
   g_signal_connect(button, "clicked", G_CALLBACK(Button_Pressed), NULL);
   gtk_container_add(GTK_CONTAINER(submit), button);
   gtk_widget_show(button);



   gtk_widget_show_all(window);

}


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

   GtkApplication *doubleentry;


   doubleentry=gtk_application_new("smdelectro.business.site.doubleentry", G_APPLICATION_FLAGS_NONE);

   g_signal_connect(doubleentry, "activate", G_CALLBACK(CreateWindow), NULL);


   g_application_run(G_APPLICATION(doubleentry), argc, argv);
   g_object_unref(doubleentry);




   return (EXIT_SUCCESS);
}

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

наконец, Создание файла c ссылкой на xml - ОДИН путь, это круто, спасибо Glade. Создание чистого C Gtk3 - это боль ... omg

парсер xml для генерации c кода ... ав .. BRB

0 голосов
/ 04 мая 2019

Код ниже работает:

#include <gtk/gtk.h>

int main(int argc, char **argv)
{
    // Init
    gtk_init(&argc,&argv);
    // Create widgets
    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    GtkGrid *grid     = GTK_GRID(gtk_grid_new());
    // Attach entries
    gtk_grid_attach(grid,gtk_entry_new(),0,0,1,1);
    gtk_grid_attach(grid,gtk_entry_new(),0,1,1,1);
    // Add the grid in the window
    gtk_container_add(GTK_CONTAINER(window),GTK_WIDGET(grid));
    // Dirty way to force clean termination when window is closed
    g_signal_connect(window,"delete-event",G_CALLBACK(gtk_main_quit),NULL);
    // Show **everythings** (not only the window)
    gtk_widget_show_all(window);
    // Main loop
    gtk_main();
    return 0;
}

Без какого-либо исходного кода я не могу предоставить дополнительную помощь, не могли бы вы опубликовать его, пожалуйста.

Создается распространенная ловушка в GTK + 3виджет не показывая их.Если вы замените gtk_widget_show_all на gtk_widget_show, вы увидите окно без виджетов, они здесь, но не отображаются, потому что по умолчанию для свойства visible установлено значение FALSE.

...