Wxwidgets- mouse events


(JustSM) #1

Cum functioneaza mouse event-urile din wxwidgets. Am cautat pe site-ul lor,in documentatie,dar nu am gasit niciun exemplu.
Am de ex aceast event:EVT_LEFT_UP
Cum ar trebui sa il folosesc?adica unde sa il scriu ca sa functioneze?
de ex aici:

void MiniSoftwareFrame::OnButton1Click4(wxCommandEvent& event) {
}

Daca elementul Button1 este apasat atunci se executa anumite instructiuni.Cum as putea face acelasi lucru cand de ex trec cu mouse-ul peste acel element?(mouse over)
Am folosit un timp jquery dar nu prea mi-a placut web front end asa ca am trebuie pe c++,aici pare mai complicat…


(Cosmin Popescu) #2

Trebuie da creezi acel eveninent
in Jquery deja existe
@serghei sper ca nu zic prostii :smiley:


(JustSM) #3

Cum mai exact as face acest lucru?


(Adavidoaiei Dumitru-Cornel) #4

Indeed @serghei e specialistul in C++


(Cosmin Popescu) #5

cred ca ar trebui sa cauti cum faci un eveniment custom

https://forums.wxwidgets.org/viewtopic.php?t=40327
am stere link ul cu wiki ca nu era nimic acolo

daca observi, metoda ta primeste un eveniment ca parametru


(JustSM) #6

Trebuie declarat fiecare eveniment de genul?
Exista vreo lista cu toate declaratiile gata facute?Poate cineva care foloseste mult c++ daca stie…


(Cosmin Popescu) #7

Trebuie sa stii ceva c++


(Serghei Amelian) #8

Handling-ul evenimentelor la wxWidgets e un subiect complicat, daca vrei sa-l înţelegi pe bune. Aici nu e vorba de C++ ci de modul specific in care wxWidgets face bridge intre obiecte (butoane, campuri de editare etc) si functiile care captureaza evenimentele “emise” de acele obiecte.

http://docs.wxwidgets.org/3.0/overview_events.html

Din pacate nu folosesc wxWidgets, asa ca nu pot sa vin cu exemple concrete. Din câte ştiu, wxWidgets foloseşte “table events” asemănătoare cu cele din MFC. Mai nou, am observat ca au bagat şi “dynamic event handling”, care permite evitarea acelor declaratii foarte complicate specifice tabelelor de handling.

Dacă abia înveţi C++, Qt cred că este o alegere mult mai bună, aici e mult mai simpla conectarea unui object la o functie de handling, de genul asta:

connect(my_button, SIGNAL(click()), SLOT(do_something()));


(Adavidoaiei Dumitru-Cornel) #9

E free pentru proiecte open source:

Qt Creator e un IDE, ca code blocks, dar e cel mai smecher de C++.


(JustSM) #10

Si nu pot folosi de la el doar partea asta de creare de widget-uri(ex:butoane,fields etc),trebuie neaparat sa folosesc tot IDE-ul?


(Serghei Amelian) #11

Şi are si un GUI builder integrat.

Poţi să foloseşti ce vrei, dar nu prea are sens. Qt Creator e cel mai bun IDE pe care il cunosc. Ce-i drept, nici nu am folosit altele la modul profesional, aşa ca e posibil să mă inşel :slight_smile:

La modul serios, ca sa faci programare in Qt fara Qt Creator ar putea fi destul de… complicat. Qt Creator face nişte chestii relativ complexe in spate (stie sa proceseze XML-urile care reprezinta interfetele grafice, înţelege sintaxa keyword-urilor speciale pentru Qt etc).


(Cosmin Popescu) #12

Pe partea de GUI eu folosesc Visual Studio.

Sunt 2 fisiere anume:

  • Fisierul designer unde ai doar codul care genereaza interfata grafica
  • Un fisier cu nume Form1.cs(poate sa aiba alt nume) unde ai logica programului

(Serghei Amelian) #13

Asta ştie layout management? Adica daca bag fonturi foarte mari, aranjarea widget-urilor se va adapta automat, ca la HTML?

Adică ceva de genul ăsta: http://doc.qt.io/qt-5/layout.html


(Cosmin Popescu) #14

Hmmmm
Poti sa te joci cu layout-uri. Eu nu le-am folosit. Poti sa folosesti fonturi de diferite dimensiuni.

Nu am incercat, dar mi-ai dat o tema de gandire

Dezavantajul aplicatiilor facute in Windows Form este ca nu prea sunt “responsive”


Fereastra este maximizata, dar pozitia elemntelor grafice nu se schimba

Daca se doreste ceva mai avansat pe partea de GUI se poate folosi WPF - Windows Presentation Foundation
Ala foloseste XML(XAML) pt interfata grafica


(Serghei Amelian) #15

Am înţeles, deci poziţia si dimensiunile widget-urilor sunt fixe. Eu evit astfel de framework-uri, pot da batai de cap daca faci aplicatii folosite de foarte multi clienti, pe sisteme de operare diferite, rezolutii de monitor diferite, dimensiuni de font diferite etc.


(Adavidoaiei Dumitru-Cornel) #16

Aplicatiile dektop facute cu windows forms, wpf, nu sunt cross platform dar experimentalul electron .net este.


(Cosmin Popescu) #17

Cu Qt poti sa dezvolti inclusiv pe mobil. Pt sistemul de operare Blackberry OS 10 puteai sa scrii aplicatii cu Qt si C++

Blackberry OS 10 este un sistem de operare folosit pe blacberry z10, z30 etc

Nota: Ne-am cam dus putin in offtopic :slight_smile:


(Serghei Amelian) #18

Mda, nu prea ai ce să faci, discuţiile se duc în mod natural spre chestii conexe :slight_smile:


(István F.) #19

Nu ti-a placut jQuery si acum faci dezvoltare de interfete cu C++ ? Buna gluma.

Majoritatea aplicatiilor realizate in 2017 s-au facut cu Electron sau CEF / WPF integrat in C++/C# ca sa se poata realiza o interfata cu html, css si javascript. (o interfata placuta in special)

Nu vad ce ar fi asa complicat, iti lipseste doar cum sa faci call cand se realizeaza acel event.

http://docs.wxwidgets.org/3.0/overview_events.html

  EVT_BUTTON(BUTTON1, MyFrame::OnButton1)

in event table.

Esti incepator din cate vad, de ce ai ales wxWidgets in loc de Visual Studio cu Windows Forms sau Qt. Toate tutorialele pentru wxwidgets sunt de o calitate foarte joasa. Poti invata doar din codul sursa al altor aplicatii, vezi Audacity, KiCad.


(JustSM) #20

jquery a fost fain dar parca intra prea mult pe partea de design si am vrut sa trec pe c++ deoarece cred ca necesitata mai multa matematica(ceea ce imi place)
de ce am ales wxwidgets?folosesc/foloseam codeblocks si de acolo am aflat de el