Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-06-2003, 12:10   #1
Kleidemos
Bannato
 
L'Avatar di Kleidemos
 
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
GTK e C++

Dove trovo una guida che mi insegni ad usare le GTK(BENE!) con il C++ per creare GUI??
Kleidemos è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2003, 19:55   #2
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Re: GTK e C++

Quote:
Originally posted by "Kleidemos"

Dove trovo una guida che mi insegni ad usare le GTK(BENE!) con il C++ per creare GUI??
Imparati prima ad usare il toolkit nativo con il C, vedrai che poi usarle sotto C++ è solo una questione di leggere qualche esempio.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2003, 19:58   #3
maxithron
Senior Member
 
L'Avatar di maxithron
 
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
prova un pò qui:

http://utenti.lycos.it/ldm/art/iart7.htm
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n;
Utilizzando atomi trivalenti drogheremo il silicio di tipo p;
Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo
maxithron è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2003, 02:08   #4
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Re: GTK e C++

Quote:
Originally posted by "mjordan"



Imparati prima ad usare il toolkit nativo con il C, vedrai che poi usarle sotto C++ è solo una questione di leggere qualche esempio.
Secondo me le GTK come interfaccia sono un abominio . Piu' semplice partire da un binding per il C++, che e' decisamente piu' intuitivo anche se c'e' meno documentazione (ad esempio con le GTK--, http://www.gtkmm.org)
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2003, 21:19   #5
gokan
Senior Member
 
L'Avatar di gokan
 
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
Re: GTK e C++

Quote:
Originally posted by "Kleidemos"

Dove trovo una guida che mi insegni ad usare le GTK(BENE!) con il C++ per creare GUI??
Su una rivista di Linux ho letto che consigliavano questo libro:
http://www.apogeonline.com/libri/00615/scheda

Il mio è solo un link.Di più nin sò
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer
gokan è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2003, 09:12   #6
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Re: GTK e C++

Quote:
Originally posted by "/\/\@®¢Ø"



Secondo me le GTK come interfaccia sono un abominio . Piu' semplice partire da un binding per il C++, che e' decisamente piu' intuitivo anche se c'e' meno documentazione (ad esempio con le GTK--, http://www.gtkmm.org)
Non capisco come fai a dire che un binding per un toolkit nativo di un altro linguaggio sia + intuitivo...
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2003, 09:13   #7
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Re: GTK e C++

Quote:
Originally posted by "gokan"


Su una rivista di Linux ho letto che consigliavano questo libro:
http://www.apogeonline.com/libri/00615/scheda

Il mio è solo un link.Di più nin sò
Non è un libro che può essere letto da una persona che le GTK+ non le conosce.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2003, 16:16   #8
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Purtroppo è il problema delle QT

Si inventassero qualcosa tipo il QT Designer della TrollTech

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2003, 18:16   #9
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Re: GTK e C++

Quote:
Originally posted by "mjordan"



Non capisco come fai a dire che un binding per un toolkit nativo di un altro linguaggio sia + intuitivo...
Nel caso in questione si tratta di un toolkit dalla struttura object-oriented implementato in un linguaggio procedurale.
Un qualsiasi binding per un linguaggio OO riesce a togliere di mezzo i trucchi arcani a cui sono ricorsi gli implementatori delle GTK+ per fare cio'.

Ad esempio ecco il codice per fare un semplice "Hello World" con le GTK+ e due binding differenti ( uno C++ e l'altryo Python )

GTK+:
Codice:
#include <gtk/gtk.h>
static void hello( GtkWidget *widget,
                   gpointer   data )
{
    g_print ("Hello World\n");
}

static gboolean delete_event( GtkWidget *widget,
                              GdkEvent  *event,
                              gpointer   data )
{
    g_print ("delete event occurred\n");
    return TRUE;
}

static void destroy( GtkWidget *widget,
                     gpointer   data )
{
    gtk_main_quit ();
}

int main( int   argc,
          char *argv[] )
{
    GtkWidget *window;
    GtkWidget *button;
    gtk_init (&argc, &argv);
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    
    g_signal_connect (G_OBJECT (window), "delete_event",
		      G_CALLBACK (delete_event), NULL);
    
    g_signal_connect (G_OBJECT (window), "destroy",
		      G_CALLBACK (destroy), NULL);
    
    gtk_container_set_border_width (GTK_CONTAINER (window), 10);
    
    button = gtk_button_new_with_label ("Hello World");
    
    g_signal_connect (G_OBJECT (button), "clicked",
		      G_CALLBACK (hello), NULL);
    
    g_signal_connect_swapped (G_OBJECT (button), "clicked",
			      G_CALLBACK (gtk_widget_destroy),
                              G_OBJECT (window));
    
    gtk_container_add (GTK_CONTAINER (window), button);
    
    gtk_widget_show (button);
    
    gtk_widget_show (window);
    
    gtk_main ();
    
    return 0;
}
gtkmm:
Codice:
#include <iostream>
#include <gtkmm/button.h>
#include <gtkmm/window.h>

class HelloWorld : public Gtk::Window
{

public:
  HelloWorld();
  virtual ~HelloWorld();

protected:
  virtual void on_button_clicked();

  Gtk::Button m_button;
};

HelloWorld::HelloWorld()
: m_button("Hello World")   // creates a new button with the label "Hello World".
{
  set_border_width(10);

  m_button.signal_clicked().connect(SigC::slot(*this, &HelloWorld::on_button_clicked));

  add(m_button);

  m_button.show();
}

HelloWorld::~HelloWorld()
{
}

void HelloWorld::on_button_clicked()
{
  std::cout << "Hello World" << std::endl;
}

File: main.cc

#include <gtkmm/main.h>
#include "helloworld.h"

int main (int argc, char *argv[])
{
  Gtk::Main kit(argc, argv);

  HelloWorld helloworld;
  Gtk::Main::run(helloworld); //Shows the window and returns when it is closed.

  return 0;
}
e py-gtk:
Codice:
#!/usr/bin/env python

# translation of the simple.c test in the gtk+ distribution, using the
# new() function from gobject (this is an example of creating objects
# with the properties interface).

import gobject, gtk

def hello(*args):
	print "Hello World"
	window.destroy()

def destroy(*args):
	window.hide()
	gtk.main_quit()

window = gobject.new(gtk.Window,
		     type=gtk.WINDOW_TOPLEVEL,
		     title='Hello World',
		     allow_grow=gtk.FALSE,
		     allow_shrink=gtk.FALSE,
		     border_width=10)
window.connect("destroy", destroy)

button = gobject.new(gtk.Button, label="Hello World", parent=window)
button.connect("clicked", hello)

window.show_all()
gtk.main()
Al di la' del codice in se' (che non e' perfettamente identico), quello che e' piu' evidente e' che mentre col C devi fare contorsionismi con le dita sulla tastiera, con gli altri due linguaggi risulta tutto piu' naturale, visto che non devi scrivere a ripetizione macro e cast uno sull'altro, e in piu' il compilatore puo' scovare molti piu' errori.
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2003, 17:19   #10
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Re: GTK e C++

Quote:
Originally posted by "/\/\@®¢Ø"


Nel caso in questione si tratta di un toolkit dalla struttura object-oriented implementato in un linguaggio procedurale.
Un qualsiasi binding per un linguaggio OO riesce a togliere di mezzo i trucchi arcani a cui sono ricorsi gli implementatori delle GTK+ per fare cio'.

Ad esempio ecco il codice per fare un semplice "Hello World" con le GTK+ e due binding differenti ( uno C++ e l'altryo Python )

GTK+:
Codice:
#include <gtk/gtk.h>
static void hello( GtkWidget *widget,
                   gpointer   data )
{
    g_print ("Hello World\n");
}

static gboolean delete_event( GtkWidget *widget,
                              GdkEvent  *event,
                              gpointer   data )
{
    g_print ("delete event occurred\n");
    return TRUE;
}

static void destroy( GtkWidget *widget,
                     gpointer   data )
{
    gtk_main_quit ();
}

int main( int   argc,
          char *argv[] )
{
    GtkWidget *window;
    GtkWidget *button;
    gtk_init (&argc, &argv);
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    
    g_signal_connect (G_OBJECT (window), "delete_event",
		      G_CALLBACK (delete_event), NULL);
    
    g_signal_connect (G_OBJECT (window), "destroy",
		      G_CALLBACK (destroy), NULL);
    
    gtk_container_set_border_width (GTK_CONTAINER (window), 10);
    
    button = gtk_button_new_with_label ("Hello World");
    
    g_signal_connect (G_OBJECT (button), "clicked",
		      G_CALLBACK (hello), NULL);
    
    g_signal_connect_swapped (G_OBJECT (button), "clicked",
			      G_CALLBACK (gtk_widget_destroy),
                              G_OBJECT (window));
    
    gtk_container_add (GTK_CONTAINER (window), button);
    
    gtk_widget_show (button);
    
    gtk_widget_show (window);
    
    gtk_main ();
    
    return 0;
}
gtkmm:
Codice:
#include <iostream>
#include <gtkmm/button.h>
#include <gtkmm/window.h>

class HelloWorld : public Gtk::Window
{

public:
  HelloWorld();
  virtual ~HelloWorld();

protected:
  virtual void on_button_clicked();

  Gtk::Button m_button;
};

HelloWorld::HelloWorld()
: m_button("Hello World")   // creates a new button with the label "Hello World".
{
  set_border_width(10);

  m_button.signal_clicked().connect(SigC::slot(*this, &HelloWorld::on_button_clicked));

  add(m_button);

  m_button.show();
}

HelloWorld::~HelloWorld()
{
}

void HelloWorld::on_button_clicked()
{
  std::cout << "Hello World" << std::endl;
}

File: main.cc

#include <gtkmm/main.h>
#include "helloworld.h"

int main (int argc, char *argv[])
{
  Gtk::Main kit(argc, argv);

  HelloWorld helloworld;
  Gtk::Main::run(helloworld); //Shows the window and returns when it is closed.

  return 0;
}
e py-gtk:
Codice:
#!/usr/bin/env python

# translation of the simple.c test in the gtk+ distribution, using the
# new() function from gobject (this is an example of creating objects
# with the properties interface).

import gobject, gtk

def hello(*args):
	print "Hello World"
	window.destroy()

def destroy(*args):
	window.hide()
	gtk.main_quit()

window = gobject.new(gtk.Window,
		     type=gtk.WINDOW_TOPLEVEL,
		     title='Hello World',
		     allow_grow=gtk.FALSE,
		     allow_shrink=gtk.FALSE,
		     border_width=10)
window.connect("destroy", destroy)

button = gobject.new(gtk.Button, label="Hello World", parent=window)
button.connect("clicked", hello)

window.show_all()
gtk.main()
Al di la' del codice in se' (che non e' perfettamente identico), quello che e' piu' evidente e' che mentre col C devi fare contorsionismi con le dita sulla tastiera, con gli altri due linguaggi risulta tutto piu' naturale, visto che non devi scrivere a ripetizione macro e cast uno sull'altro, e in piu' il compilatore puo' scovare molti piu' errori.
Sara' comunque e' questione di gusti...
mjordan è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Il sistema di verifica dell'identit&agra...
Ora è ufficiale: Samsung sta per ...
Motorola Edge 70 Fusion: ecco le specifi...
8TB a meno di 170€: il richiestissimo Ha...
Il nuovo MacBook 'low cost' arriver&agra...
Pokémon Rosso Fuoco e Verde Fogli...
Risparmiare con le offerte Amazon: weeke...
Gli Xiaomi 17 arrivano a fine febbraio, ...
48.000 Pa a poco più di 100€: la ...
PC più potente, meno spesa: su Amazon to...
Con 2 acquisti si ottiene il 40% di scon...
Blocco VPN in Spagna durante le partite ...
ECOVACS DEEBOT T30C OMNI GEN2 torna a 34...
Cercate uno smartphone? Ecco 7 modelli i...
Paramount non molla: Netflix è pr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:30.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v