簡體   English   中英

我如何用GTK3稱呼C中的另一個“窗口”

[英]How i call another “window” in C with GTK3

我想在按下按鈕“ on_btn_janelaCriarSessao_clicked”時調用另一個窗口,該窗口的代碼是這樣的:

JanelaCriarSessao::JanelaCriarSessao(){
/* JANELA CRIAR SESSAO */

windowCriarSessao = gtk_window_new(GTK_WINDOW_TOPLEVEL);
//
gtk_window_set_default_size(GTK_WINDOW(windowCriarSessao), 400, 250);
gtk_window_set_title(GTK_WINDOW(windowCriarSessao), "Criar Sessao");
gtk_window_set_position(GTK_WINDOW(windowCriarSessao), GTK_WIN_POS_CENTER_ALWAYS);
gtk_window_set_resizable(GTK_WINDOW(windowCriarSessao), FALSE);

textoInformativo = gtk_label_new("Digite a chave(ID) da sessao abaixo: ");
entry_IDSESSAO = gtk_entry_new ();
btn_cadastrarSessao = gtk_button_new_with_label("Cadastrar");

caixaWidgets = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);

//empacotamento dos widgets na janela
gtk_box_pack_start(GTK_BOX(caixaWidgets), textoInformativo, TRUE, TRUE, 3);
gtk_box_pack_start(GTK_BOX(caixaWidgets), entry_IDSESSAO, TRUE, TRUE, 3);
gtk_box_pack_end(GTK_BOX(caixaWidgets), btn_cadastrarSessao, TRUE, TRUE, 3);

g_signal_connect (GTK_ENTRY(entry_IDSESSAO), "activate", 
    G_CALLBACK(entry_activate), textoInformativo);

//Connects GCallback function gtk_main_quit to "destroy" signal for "window"
g_signal_connect(G_OBJECT(windowCriarSessao), "destroy", 
    G_CALLBACK(gtk_main_quit), NULL);

gtk_container_add(GTK_CONTAINER(windowCriarSessao), caixaWidgets);}

按鈕的代碼是這樣的:

void JanelaPrincipal::mostrar(){
//mostra a janela principal
gtk_widget_show_all(window);} 
void on_btn_janelaCriarSessao_clicked(GtkWidget *widget, JanelaPrincipal *data){ JanelaCriarSessao obj;
obj.mostrar();}

但是,當我按下按鈕時,他打開了一個窗口,但沒有任何小部件,一個空白窗口僅帶有我輸入的標題。main.cpp的代碼:

gtk_init(&argc, &argv);

JanelaPrincipal obj;
obj.mostrar();

gtk_main();

return 0;}
btn_cadastrarSessao = gtk_button_new_with_label("Cadastrar");

我認為缺少與clicked事件的連接:

g_signal_connect(G_OBJECT(btn_cadastrarSessao), "clicked", ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM