Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[GTK+] Nie pokazuje się drugi przycisk

Ostatnio zmodyfikowano 2013-03-16 13:11
Autor Wiadomość
Krzysiek318k
Temat założony przez niniejszego użytkownika
[GTK+] Nie pokazuje się drugi przycisk
» 2013-03-13 12:32:18
Witam, po skompilowaniu kodu i uruchomieniu programu wyświetla mi się tylko przycisk "zaloguj", a przycisk "opcje" już nie.

Kod źródłowy programu:
C/C++
#include <gtk/gtk.h>
int main( int argc, char * argv[] )
{
    GtkWidget * okno;
    GtkWidget * okno_opcji;
    GtkWidget * zaloguj_kontener;
    GtkWidget * zaloguj_przycisk;
    GtkWidget * opcje_kontener;
    GtkWidget * opcje_przycisk;
   
    gtk_init( & argc, & argv );
   
    okno = gtk_window_new( GTK_WINDOW_TOPLEVEL );
    gtk_window_set_default_size( GTK_WINDOW( okno ), 600, 500 );
    gtk_window_set_position( GTK_WINDOW( okno ), GTK_WIN_POS_CENTER );
    gtk_window_set_title( GTK_WINDOW( okno ), "NecraftLauncher" );
   
    zaloguj_kontener = gtk_fixed_new();
    gtk_container_add( GTK_CONTAINER( okno ), zaloguj_kontener );
   
    opcje_kontener = gtk_fixed_new();
    gtk_container_add( GTK_CONTAINER( okno ), opcje_kontener );
   
    zaloguj_przycisk = gtk_toggle_button_new_with_label( "Zaloguj" );
    gtk_widget_set_size_request( zaloguj_przycisk, 70, 35 );
    gtk_fixed_put( GTK_FIXED( zaloguj_kontener ), zaloguj_przycisk, 500, 400 );
   
    opcje_przycisk = gtk_toggle_button_new_with_label( "Opcje" );
    gtk_widget_set_size_request( opcje_przycisk, 80, 40 );
    gtk_fixed_put( GTK_FIXED( opcje_kontener ), opcje_przycisk, 300, 200 );
   
   
    g_signal_connect( G_OBJECT( okno ), "destroy", gtk_main_quit, NULL );
   
    gtk_widget_show_all( okno );
   
    gtk_main();
    return 0;
}

Error debuggera:
(NecraftLauncher.exe:2792): Gtk-WARNING **: Attempting to add a widget with type
 GtkFixed to a GtkWindow, but as a GtkBin subclass a GtkWindow can only contain
one widget at a time; it already contains a widget of type GtkFixed
P-78192
czosnek17
» 2013-03-13 19:44:03
Próbujesz umieścić 2 kontenery w oknie. Najpierw umieszczasz zaloguj_kontener, a potem opcje_kontener. W okno można wstawić tylko 1 kontener, więc 2 się nie wstawia i widzisz błąd. Ja jak coś piszę w GTK+, to zawsze robię główny kontener fixed, dodaję go do okna i w niego wszystko wstawiam. Kontener można wstawić do kontenera. Więc
C/C++
opcje_kontener = gtk_fixed_new();
gtk_container_add( GTK_CONTAINER( okno ), opcje_kontener );

zamień na
C/C++
opcje_kontener = gtk_fixed_new();
gtk_container_add( GTK_CONTAINER( zaloguj_kontener ), opcje_kontener ); //wstawienie opcje_kontener do zaloguj_kontener

i będzie działać.
P-78245
Krzysiek318k
Temat założony przez niniejszego użytkownika
» 2013-03-15 13:03:02
Dzięki, działa :)

A powiesz mi jak ustawić pozycje kontenera GtkEntry ?
P-78412
czosnek17
» 2013-03-15 18:58:37
GtkEntry, czyli chodzi o pole do wpisywania tekstu?
Możesz ustawić od razu przy umieszczeniu w kontenerze, a potem funkcją gtk_fixed_move() np
C/C++
gtk_fixed_move( GTK_FIXED( kontener_fixed ), jakis_widget, 10, 90 );
P-78446
Krzysiek318k
Temat założony przez niniejszego użytkownika
» 2013-03-16 13:01:11
Dzięki, nie wiedziałem, że gtk_entry można wstawić w kontener fixed. A powiesz mi jeszcze jak odczytać dane z gtk_entry do zmiennej ?
P-78519
m4tx
» 2013-03-16 13:11:33
A powiesz mi jeszcze jak odczytać dane z gtk_entry do zmiennej ?
https://developer.gnome.org/gtk3/3.4/GtkEntry.html#gtk-entry-get-text
P-78520
« 1 »
  Strona 1 z 1