gtk 입력 위젯에서 텍스트를 어떻게 가져 와서 그것을 정수 값으로 변환합니까? 내 코드에서 위젯에 대한 포인터를 포함하는 Window라는 래퍼 구조체를 포함합니다. 주에서는 Window의 인스턴스를 선언 한 다음 적절한 GTK 함수 호출을 사용하여 올바른 위젯을 빌드합니다. 그런 다음 해당 윈도우 객체를 클릭 된 액션을 처리하는 함수에 전달합니다. 그런 다음 분모를 정수 형식으로 나눈 분자를 계산하려고합니다. 아래는 나의 시도입니다. 모든 코드는 button_clicked 함수를 제외하고 작동합니다. 어떤 아이디어? 내가 올바르게 표시되는 경우GTK 정수에서 정수로 변환
#include <gtk/gtk.h>
#include <stdlib.h>
struct Window
{
GtkWidget *numerator;
GtkWidget *denominator;
GtkWidget *button;
GtkWidget *label;
};
void button_clicked(GtkWidget *widget, gpointer data)
{
Window* w = (Window*)data;
char buf[10];
char buffer[200];
GtkEntry* e = (GtkEntry*)w->numerator;
const gchar* entry1 = gtk_entry_get_text(e);
char* test = (char*)gchar;
int r = atoi(test);
sprintf(buf,"%d",r);
GtkWidget *label = w->label;
gtk_label_set_text(GTK_LABEL(label), buf);
}
int main(int argc, char*argv[])
{
GtkWidget *window;
GtkWidget *table;
Window w;
//Set up my window
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Division");
gtk_window_set_default_size(GTK_WINDOW(window),500,500);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
//Create my table and add it to the window
table = gtk_table_new(4,2,FALSE);
gtk_container_add(GTK_CONTAINER(window),table);
//Create instances of all my widgets
w.numerator = gtk_entry_new();
w.denominator = gtk_entry_new();
w.button = gtk_button_new_with_label("Click");
w.label = gtk_label_new("result");
//Attack the widgets to the table
gtk_table_attach(GTK_TABLE(table), w.numerator,0,1,0,1,GTK_FILL,GTK_FILL,5,5);
gtk_table_attach(GTK_TABLE(table), w.denominator,0,1,1,2,GTK_FILL,GTK_FILL,5,5);
gtk_table_attach(GTK_TABLE(table), w.button,0,1,2,3,GTK_FILL,GTK_FILL,5,5);
gtk_table_attach(GTK_TABLE(table), w.label,0,1,3,4,GTK_FILL,GTK_FILL,5,5);
//attach the click action to with the button to invoke the button_clicked function
g_signal_connect(G_OBJECT(w.button),"clicked",G_CALLBACK(button_clicked),&w);
g_signal_connect_swapped(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
"button_clicked 함수를 제외한 모든 코드가 작동합니다."... 어쩌면 당신은 _how_ 작동하지 않는다고 설명 할 수 있습니까? 디버거에서 단계별 실행을 시도 했습니까? –
그건 그렇고, C++을 쓰고 있다면 [gtkmm] (http://www.gtkmm.org/en/) 대신에 가야할까요? – Ancurio
@Ancurio gtkmm을 시작하기위한 좋은 입문서가 있습니까? 모든 올바른 파일을 다운로드 한 줄 알았지 만 gtkmm을 포함 시키려고 할 때 해당 파일이나 디렉토리가 없습니다. – Matthew