gpt4 book ai didi

c - Glade 3 和 C,按钮和文本框的信号处理

转载 作者:太空宇宙 更新时间:2023-11-04 02:57:50 25 4
gpt4 key购买 nike

我是 Glade 的初学者,但有 C 编程经验。

我正在尝试构建一个接受两个值并显示总和的项目。

我使用了以下内容:

textbox1 - (entry1) ---- for first value,
textbox2 - (entry2) ---- for 2nd value,
textbox3 - (entry3) ---- to display result,
button - (button1) ---- to calculate sum,
signal - (on_button1_clicked) ---- to handle sum function.

请帮我输入信号代码。

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

GtkBuilder *builder;
GtkWidget *window;
GError *error = NULL;

void on_button1_clicked
{

// Need Help in this section

}

void on_window1_destroy (GtkObject *object, gpointer user_data)
{
gtk_main_quit();
}

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

/* Init GTK+ */
gtk_init( &argc, &argv );

/* Create new GtkBuilder object */
builder = gtk_builder_new();
/* Load UI from file. If error occurs, report it and quit application.
* Replace "tut.glade" with your saved project. */
if( ! gtk_builder_add_from_file( builder, "sum.glade", &error ) )
{
g_warning( "%s", error->message );
g_free( error );
return( 1 );
}

/* Get main window pointer from UI */
window = GTK_WIDGET( gtk_builder_get_object( builder, "window1" ) );

/* Connect signals */
gtk_builder_connect_signals( builder, NULL );

/* Destroy builder, since we don't need it anymore */
g_object_unref( G_OBJECT( builder ) );

/* Show window. All other widgets are automatically shown by GtkBuilder */
gtk_widget_show( window );

/* Start main loop */
gtk_main();

return( 0 );
}

Sample code image

最佳答案

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

/*i have grouped all the widgets in one structure. this technique will
help if you have huge number of windows in your project.
as the number of window will increase the variable we declare will increase
and the declared variables can have same name of different windows */
struct login_window
{
GtkEntry *e1;//textbox1
GtkEntry *e2;//textbox2
GtkEntry *e3;//textbox3
};
typedef struct login_window widgets;


G_MODULE_EXPORT void on_window1_destroy ()
{
gtk_main_quit ();
}


G_MODULE_EXPORT void on_button1_clicked ( GtkButton *button,widgets *widg )
{
char ch1[5],ch2[5],ch[5];
int a;
//getting text from the text boxes
const gchar *text1 = gtk_entry_get_text( widg->e2 );
const gchar *text2 = gtk_entry_get_text( widg->e1 );

//copying the text of textbox into an array
strcpy(ch1,text1);
strcpy(ch2,text2);

//converting characters to integer and adding them
a=(atoi(ch1))+(atoi(ch2));

itoa(a,ch,5);//converting integer to character
gtk_entry_set_text (widg->e3,ch);//setting or displaying text(output) to the third text box
}

int main(int argc, char *argv[])
{
GtkBuilder *gtkBuilder;
widgets widg;
GtkWidget *window;

gtk_init(&argc, &argv);
gtkBuilder = gtk_builder_new();

gtk_builder_add_from_file(gtkBuilder, "window.glade", NULL);


window = GTK_WIDGET( gtk_builder_get_object( gtkBuilder, "window1") );

//connecting each structure member to it appropriate gtkwidget
widg.e1 = GTK_ENTRY( gtk_builder_get_object( gtkBuilder, "entry1" ) );
widg.e2 = GTK_ENTRY( gtk_builder_get_object( gtkBuilder, "entry2" ) );
widg.e3 = GTK_ENTRY( gtk_builder_get_object( gtkBuilder, "entry3" ) );

/*connecting signals so that appropriate handlers can be called when button is clicked*/
gtk_builder_connect_signals( gtkBuilder, &widg );

g_object_unref(G_OBJECT(gtkBuilder));
gtk_widget_show(window);//showing the window
gtk_main();

return 0;
}

关于c - Glade 3 和 C,按钮和文本框的信号处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15335869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com