C-如何在GTK3中获得2个textentry



我已经在Google上呆了2周。2个网格中的纹理。(例如:用户ID,密码(GLADE让我设计没问题...

对于一个textentry小部件,它可以工作。

我正在与mysql进行编译/链接所以我想调用函数,存储过程使用entry1和entry2。

请帮忙谢谢

:编辑:15:18 2019年5月4日

我找到了一个结论性的解决方案。(但这是投掷SEG的错误(位置的位以下:

这是视频转录到文本(C代码(的某种转录。

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

显然是根据我的目标...

这是有效的,但假设您想使用相同的实例第二次," SEG故障"

我敢肯定我会发现问题(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]='';
   password[0]='';*/
   userid=gtk_entry_get_text(userid);
   password=gtk_entry_get_text(password);

   g_print("%snr%snr",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);
}

下面的代码工作:

#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

最后,参考XML创建C文件是一种方式,很酷,谢谢Glade。创建纯C GTK3是痛苦... OMG

XML解析器生成C代码...噢..brb

相关内容

  • 没有找到相关文章

最新更新