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

[GTK+] 3 problemy.

Ostatnio zmodyfikowano 2012-07-03 11:55
Autor Wiadomość
czosnek17
Temat założony przez niniejszego użytkownika
» 2012-07-02 17:02:24
Potrzebne są takie pliki:
    gtk-x11-2.0
    gdk-x11-2.0
    atk-1.0
    gio-2.0
    pangoft2-1.0
    gdk_pixbuf-2.0
    pangocairo-1.0
    cairo
    pango-1.0
    freetype
    fontconfig
    gobject-2.0
    gmodule-2.0
    glib-2.0

Mam je wszystkie (trochę inaczej się nazywają) poza gtk-x11-2.0 i gdk-x11-2.0. W gtk z linku z kursu też nie ma tych plików, a w internecie widzę tylko dla Linuxa. Byłbym bardzo wdzięczny, jeżeli ktoś by podesłał.

Przerobiłem trochę kod, aby nie używał tego nieszczęsnego pixbufa i działa :)
ale gdy chciałem wyczyścić obrazki to już są błędy... nie wytrzymam...
C/C++
#include <gtk/gtk.h>
#include <glib/gerror.h>
#include <stdlib.h>
#include <gdk-pixbuf/gdk-pixbuf.h>

struct wieledanych {
    GtkWidget * etykieta;
    GtkWidget * label;
    GtkWidget * maluch;
    GtkWidget * lamb;
    GtkWidget * oknox;
    GtkWidget * kontener;
   
};

void dalej( GtkButton * przycisk, gpointer * dane )
{
    const gchar * lamborg = "lamborghini";
    const gchar * malucht = "maluch";
    const gchar * wcz = "wczytany";
    const gchar * niewcz = "niewczytany";
    GtkWidget * kontener2;
   
   
    const gchar * tekst;
    struct wieledanych * noweDane;
    GtkWidget * etykieta3;
    const gchar * txt3;
   
    noweDane =( struct wieledanych * ) dane;
   
    kontener2 = noweDane->kontener;
   
    tekst = gtk_entry_get_text( GTK_ENTRY( noweDane->etykieta ) );
   
    if(( !g_strcmp0( tekst, "lamborghini" ) ) ||( !g_strcmp0( tekst, "maluch" ) ) )
    {
        if( !g_strcmp0( tekst, "lamborghini" ) )
        {
            //lamb = gtk_image_new_from_file( "lamb.png" );
            gtk_container_add( GTK_CONTAINER( kontener2 ), noweDane->lamb );
            //. gtk_label_set_text( GTK_LABEL( noweDane->label ), lamborg );
           
        }
       
        if( !g_strcmp0( tekst, "maluch" ) )
        {
            //maluch = gtk_image_new_from_file( "obraz.png" );
            gtk_container_add( GTK_CONTAINER( kontener2 ), noweDane->maluch );
            //. gtk_label_set_text( GTK_LABEL( noweDane->label ), malucht );
        }
    }
    else
    {
        gtk_image_clear( noweDane->maluch );
        gtk_image_clear( noweDane->lamb ); ////////////TU
       
        gtk_label_set_text( GTK_LABEL( noweDane->label ), "nieznany pojazd" );
    }
   
   
    gtk_widget_show_all( kontener2 );
}

int main( int argc, char * argv[] )
{
   
    GtkWidget * ptxt;
    GtkWidget * napis;
    GtkWidget * kontener, * kontener2;
    GtkWidget * linia;
    GtkWidget * napis2;
    GtkWidget * przycisk;
    GtkWidget * okno;
    GtkWidget * maluch, * lamborgini;
    GtkWidget * mal = NULL;
    GtkWidget * lam = NULL;
    const gchar * tekstt = "TAK.";
    const gchar * tekstt2 = "NIE.";
    struct wieledanych wieleDanych;
   
    gtk_init( & argc, & argv );
    okno = gtk_window_new( GTK_WINDOW_TOPLEVEL );
    gtk_window_set_title( GTK_WINDOW( okno ), "Kurs GTK+" );
    gtk_window_set_position( GTK_WINDOW( okno ), GTK_WIN_POS_CENTER );
    gtk_window_set_default_size( GTK_WINDOW( okno ), 300, 150 );
   
    gtk_window_set_default_size( GTK_WINDOW( okno ), 300, 200 );
   
    przycisk = gtk_button_new_with_label( "dalej" );
    gtk_widget_set_size_request( przycisk, 10, 20 );
   
    kontener = gtk_vbox_new( FALSE, 1 );
    gtk_container_add( GTK_CONTAINER( okno ), kontener );
   
    napis2 = gtk_label_new( " ~samochód~ " );
   
    mal = gtk_image_new_from_file( "obraz.png" );
    // maluch = gtk_image_new_from_pixbuf( mal );
   
    lam = gtk_image_new_from_file( "lamb.png" );
    //lamborgini = gtk_image_new_from_pixbuf( lam );
   
    if(( mal == NULL ) ||( lam == NULL ) )
    // Oznacza, że plik nie został wczytany
         gtk_label_set_text( GTK_LABEL( napis2 ), tekstt2 );
    else
    // Plik wczytany
         gtk_label_set_text( GTK_LABEL( napis2 ), tekstt );
   
    gtk_box_pack_start( GTK_BOX( kontener ), napis2, FALSE, TRUE, 1 );
    linia = gtk_hseparator_new();
    gtk_box_pack_start( GTK_BOX( kontener ), linia, FALSE, TRUE, 17 );
   
    kontener2 = gtk_vbox_new( FALSE, 1 );
    gtk_container_add( GTK_CONTAINER( kontener ), kontener2 );
   
    napis = gtk_label_new( NULL );
    gtk_container_add( GTK_CONTAINER( kontener2 ), napis );
   
    ptxt = gtk_entry_new();
    gtk_container_add( GTK_CONTAINER( kontener ), ptxt );
   
    gtk_box_pack_start( GTK_BOX( kontener ), przycisk, FALSE, FALSE, 0 );
   
    wieleDanych.etykieta = ptxt;
    wieleDanych.label = napis;
    wieleDanych.lamb = lam;
    wieleDanych.maluch = mal;
    wieleDanych.oknox = okno;
    wieleDanych.kontener = kontener2;
   
    g_signal_connect( przycisk, "clicked", G_CALLBACK( dalej ), & wieleDanych );
    g_signal_connect( ptxt, "activate", G_CALLBACK( dalej ), & wieleDanych );
   
    g_signal_connect( G_OBJECT( okno ), "destroy", G_CALLBACK( gtk_main_quit ), NULL );
    gtk_widget_show_all( okno );
    gtk_main();
    return 0;
}

cannot convert 'GtkWidget*' to 'GtkImage*' for argument '1' to 'void gtk_image_clear(GtkImage*)'
P-59441
DejaVu
» 2012-07-02 17:06:49
No ten błąd to ewidentnie wskazuje, że przerobiłeś kod źle. Próbujesz przypisać wskaźnik typu A do wskaźnika typu B. Czytaj ten log kompilacji to nie gryzie...
P-59442
Badman
» 2012-07-03 11:55:28
Potrzebujesz tylko program zlinkować  z gdk_pixbuf-2.0:
Dla CodeBlocks wybiersz: Project->Build options następnie przechodzisz do zakładki Linker settings wsiakasz tam przycisk Add po czym wskazujesz gdzie znajduje się plik gdk_pixbuf-2.0.lib
P-59459
1 2 3 4 « 5 »
Poprzednia strona Strona 5 z 5