Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Kako raditi sa dogadjajima kod FLTK klasa i widgeta

  • 19 odgovora
  • 7.777 pregleda

Najnovija ↓

Kako raditi sa dogadjajima kod FLTK klasa i widgeta 15.04.2005. u 20:23 · pre 262 meseca #1
Molim nekog ko zna da mi objasni sto detaljnije kako funkcionise rad dogadjaja u C++ programu koji koristi FLTK klase. Npr. zanima me kako da povezem sa nekim dugmetom dogadjaj na klik levim tasterom... i kako funkcionise handler dogadjaja. I da kako da povezem taj dogadjaj sa nekom metodom ili funkcijom.
Hvala svima unapred....
Naravno korisitm DEV Cpp 4.9.9.2
Potpis
http://www.linkedin.com/in/radegm
Re: Kako raditi sa dogadjajima kod FLTK klasa i widgeta 15.04.2005. u 20:32 · pre 262 meseca #2
Ovo ce paliti kada kliknes gumb:
Code:
void klik(Fl_Widget* object, void* userdata) {
    fl_alert("Kliknuo si gumb");
}

int main() {
    // ...
    
    Fl_Button *gumb = new Fl_Button(10, 10, 100, 25, "Klikni me");
    gumb->callback(klik);
    
    // ...
}
Ako zelis hvatati i druge evente:
Code:
class MojGumb : public Fl_Button {
    // ...
    
    int handle(int event) {
        switch event {
            case FL_PUSH:
                fl_alert("Pritisnuo si me");
            case FL_RELEASE:
                fl_alert("Otpustio si me");
            
            // ...
        }
    }
    
    // ...
};

int main() {
    // ...
    
    MojGumb *gumb = new MojGumb(10, 10, 100, 25, "Klikni me");
    
    // ...
}
Za detaljnije procitaj FLTK dokumentaciju.
Re: Kako raditi sa dogadjajima kod FLTK klasa i widgeta 16.04.2005. u 22:56 · pre 262 meseca #7
Citat:
rj444: Molim nekog ko zna da mi objasni sto detaljnije kako funkcionise rad dogadjaja u C++ programu koji koristi FLTK klase. Npr. zanima me kako da povezem sa nekim dugmetom dogadjaj na klik levim tasterom... i kako funkcionise handler dogadjaja. I da kako da povezem taj dogadjaj sa nekom metodom ili funkcijom.
Hvala svima unapred....
Naravno korisitm DEV Cpp 4.9.9.2


Kada su dogadjaji u pitanju tu se vrte tri funkcije NeznamThoSam je spomenuo dve :) ono sto nije spomenuo jeste when() :) tj u zavisnosti od eventa koji dogadjaj da bude pozvan.

FLTK je zamisljen da ima samo jedan callback method za svaki widget, i da unutar tog callback metoda obradjujes sve dogadjaje.

Osnova svega jeste Widget::handle metod, znaci kada se dogadjaj desi fltk protrci kroz widgete koji se nalaze u listi widgeta( recimo desio se klik misemm tada se event salje prozoru pa svim mogucim grupama koje se nalaze u kordinati gde je mis, pa tek nakraju dugmetu)

e sada ako handle vrati 0 smatra se da ga ta vrsta eventova ne zanima, i event se salje sledecem na listi sve dok neki widget ne prihvati i obradi event.

Ono sto default handle metod radi jeste da proveri da li se trenutni event nalazi u flagu koji se setuje when metodom i ako se taj dogadjaj nalazi u toj skupini onda poziva funkciju koju je dobio callback metodom.

Citat:
Buffy: pdf,koliko ja znam postoji samo za FLTK 1.
Bolje potrazi tutorijale za FLTK 2,jer je noviji,a samim tim i bolji!
Zasto se vracati na staro.


Dokumentacija za FLTK2 je vecim delom prebacena na doxygen, a doxygen moze pored html-a da generise i tex, a iz tex-a je lako dobiti pdf.

A sto se tice FLTK 2 on jos uvek zvanicno nije dostigao stable fazu, ali je dovoljno stabilan, koristi namespace i native utf8 podrsku. Dok se 1.1.x smatra i dalje za stable.
Potpis
http://speedy-order.com
Re: Kako raditi sa dogadjajima kod FLTK klasa i widgeta 16.04.2005. u 22:59 · pre 262 meseca #8
Citat:
rj444: Mislite na pdf sa njihovog sajta (fltk.org)? On je isti kao HTML tutorijal.
Jeste li dokumentacija za fltk2 bolja?


Dejan Lekic odrzava
www.fltk.net

I tamo imas http://www.fltk.net/files/fltk-doc-reference-chm-2.0.1.zip u chm formatu ili http://www.fltk.net/f2doc/ ako hoces html gde imas pretragu.
Potpis
http://speedy-order.com
Re: Kako raditi sa dogadjajima kod FLTK klasa i widgeta 17.04.2005. u 13:19 · pre 262 meseca #11
Meni su programi pucali na potpuno nebulozne stvari tipa: nisam definisao font na labeli ili dugmetu… Ubi se tražeći šta nije u redu, jer svaki put dobijem Segmentation fault, i onda slučajno dodam font style i proradi… I slične stvari…
Re: Kako raditi sa dogadjajima kod FLTK klasa i widgeta 18.04.2005. u 11:26 · pre 262 meseca #15
LOL
Koji sam ja idiot!
Leka, nije problem "sto je ne znam iskoristiti" nego to što ja imam staru verziju FLTK dvojke gdje jos nema klase Rectangle :D
Ali svejedno, i sam si rekao da jos nije za komercijalne programe jer je nestabilan... :)
Re: Kako raditi sa dogadjajima kod FLTK klasa i widgeta 18.04.2005. u 15:15 · pre 262 meseca #16
Ljudi hvala Vam na objasnjenjima. Polako ucim kako se radi. Medjutim, citajuci tutorijal sa sajta (sa onog na kom ima i video zapis), pokusao sam da kompajliram sledeci primer:

Code:

#include <FL/Fl.H> 
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Output.H>
using namespace std;

//---------------------------------------------------
 
class SimpleWindow : public Fl_Window{
 
   public:
      SimpleWindow(int w, int h, const char* title );
      ~SimpleWindow();
      Fl_Button* copy;
      Fl_Button* quit;
      Fl_Input* inp;
      Fl_Output* out;
    
   private:
      static void cb_copy(Fl_Widget*, void*);
      inline void cb_copy_i();
  
      static void cb_quit(Fl_Widget*, void*);
      inline void cb_quit_i();
};

//----------------------------------------------------

int main (){
  
   SimpleWindow win(300,200,"SimpleWindow");
   return Fl::run();
}

//----------------------------------------------------

SimpleWindow::SimpleWindow(int w, int h, const char* title):Fl_Window(w,h,title){
    
   begin();
      copy = new Fl_Button( 10, 150, 70, 30, "C&opy");
      copy->callback( cb_copy, this );
     
      quit = new Fl_Button(100, 150, 70, 30, "&Quit");
      quit->callback(cb_quit, this);
   
      inp = new Fl_Input(50, 50, 140, 30, "Input:");
      out = new Fl_Output(50, 100, 140, 30, "Output:");
   end();
   resizable(this);
   show();
}

//----------------------------------------------------

SimpleWindow::~SimpleWindow(){}

//----------------------------------------------------

void SimpleWindow::cb_copy(Fl_Widget* o, void* v) { 
 
   //SimpleWindow* T=(SimpleWindow*)v;
   //T->cb_copy_i();
    
   // or just the one line below
    ( (SimpleWindow*)v )->cb_copy_i();
}


void SimpleWindow::cb_copy_i() {

   out->value(inp->value());  
}

//----------------------------------------------------

void SimpleWindow::cb_quit(Fl_Widget* , void* v) {

   ( (SimpleWindow*)v )->cb_quit_i();
}


void SimpleWindow::cb_quit_i() {

    hide();
}

//----------------------------------------------------


Tada dobijam sledecu gresku:
Code:

multiple definition of 'typeinfo for Fl_Widget'
first defined here
.
.
.


I tako za sve headere koje sam ukljucio na pocetku koda.
U cemu je problem?
Potpis
http://www.linkedin.com/in/radegm
Re: Kako raditi sa dogadjajima kod FLTK klasa i widgeta 20.04.2005. u 09:15 · pre 262 meseca #17
Nadam se da nisi pokusao taj kod da kompajliras sa FLTK 2.0, jer ako jesi onda si silno pogresio - taj kod je FLTK 1.x kod. :)
Kod mene se ovaj kod koji si naveo kompajlira bez greske, sa FLTK 1.x . Evo snimka: http://gnu.nu6.org:8000/ss/snimak134.png .
Dakle, ne pokusavaj da kompajliras to sa FLTK 2.0 . FLTK 2.0 primere imas recimo na http://www.nu6.org/_/src/cpp/ ...
Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: Kako raditi sa dogadjajima kod FLTK klasa i widgeta 20.04.2005. u 12:32 · pre 262 meseca #18
Imam Fltk 1.1.6, koji je instaliran preko DEV Cpp 4.9.9.2 WebUpdate Tool-a i u njemu sam pokusao da ga kompajliram. Da li je to problem? Mozda treba da se kompajlira iz komandne linije.
Takodje mi se ova greska javljala i sa drugim primerima, sto onim koje sam skinuo sa neta, sto onim koje sam sam napisao. Obicno mi se ova greska javlja kada napravim posebnu klasu nekakvog prozora sa widgetima.
Molim Vas pomagajte ljudi, bas mi se dopada rad sa FLTK ali ne mogu da provalim ovu gresku. :)
Potpis
http://www.linkedin.com/in/radegm
Re: Kako raditi sa dogadjajima kod FLTK klasa i widgeta 22.04.2005. u 00:49 · pre 262 meseca #20
Vec sam skinuo FLTK2 i dokumentaciju za isti. Mogu ti reci da mi se onakve greske vise ne javljaju (da kucnem u drvo), ali cu verovatno nailaziti na jos problema koje cu ovde izneti. Nadam se da cu uz pomoc Vas iskusnih programera i ja nauciti dosta toga. Hvala na savetima, veoma cenim kada ljudi imaju vremena da odgovaraju na pitanja onih kojima treba pomoc.
Pozdrav
Potpis
http://www.linkedin.com/in/radegm
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme