Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: C++ GUI toolkit/ controlle class [OPGELOST]  (gelezen 4251 keer)

1Swat

  • Gast
C++ GUI toolkit/ controlle class [OPGELOST]
« Gepost op: 2009/07/24, 14:32:52 »
Hallo,
Ik ben sinds kort begonnen met programmeren in C en C++.
Daar ik zo lui ben en geen zin heb in huiswerk (vooral niet voor wiskunde :P) heb ik een programmaatje geschreven om van formules met de algemene vorm ax^2+bx+c=0 op te lossen in C.
Later ben ik overgestapt naar C++ en maakte toen voor het eerst kennis met OOP. Nu heb ik een class geschreven om een array te maken met daarin:
De Discriminant
De Vierkants wortel van de Discriminant
X1
X2
Xtop
Ytop
Ook heb ik snel een klein consoleprogrammaatje geschreven om deze class te testen. (Zie bijlage “main.cpp”)
Nu heb ik over mijn sourcecode twee vragen;
Kan deze class nog verder ingekapseld worden of efficiënter geprogrammeerd worden?

Daar mijn jongere broertje echter niet zo'n held is in console applicaties wil ik graag ook leren programma’s met een GUI te scrhijven.
Welke toolkit(’s) raden jullie me aan? (Voor zowel Ubuntu ^^ als Windows XP/7 :P)
In eerste instantie kwam ik zelf uit bij Qt maar ik kon geen goede documentatie vinden. :P


Bijvoorbaat dank,

Swat
« Laatst bewerkt op: 2009/07/25, 10:59:09 door 1Swat »

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: C++ GUI toolkit/ controlle class
« Reactie #1 Gepost op: 2009/07/24, 18:52:25 »
In eerste instantie kwam ik zelf uit bij Qt maar ik kon geen goede documentatie vinden.
Ik hoop dat je een grapje maakt. Qt is de meest gedocumenteerde toolkit in het universum :)
Zéér uitgebreide up-to-date referentie documentatie + handleidingen: http://doc.qtsoftware.com/4.6-snapshot/index.html
Een volledig on line C++/Qt 4 boek: http://cartan.cas.suffolk.edu/moin/OopDocbookWiki

Qt is inderdaad een prima keuze. Ik denk niet dat je iets beters zult vinden. En anders hoor ik het graag ;)
wxWidgets is ook een vrij populair alternatief, gtkmm is ook mogelijk. Je zou ze allemaal eens kunnen bekijken.
Ik heb in alledrie reeds geprogrammeerd, maar ben persoonlijk van mening dat Qt niet te evenaren valt.

Qt ondersteunt elk populair platform, en heeft native rendering en desktop integratie, waaronder dus ook Windows XP, en ook Windows 7.
(maar ook vanzelfsprekend Linux, *BSD, Solaris, X11-based systemen, Mac OS X (met Cocoa support), Windows Vista, Windows CE, Embedded Linux, Symbian S60...)
« Laatst bewerkt op: 2009/07/24, 18:58:17 door profoX »
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

1Swat

  • Gast
Re: C++ GUI toolkit/ controlle class
« Reactie #2 Gepost op: 2009/07/24, 22:06:50 »
In eerste instantie kwam ik zelf uit bij Qt maar ik kon geen goede documentatie vinden.
Ik hoop dat je een grapje maakt.
Ja deels , ik bedoelde echter ook dat ik door de bomen het bos niet meer kon zien. ( Ik had mischien inderdaad iets duidelijker mogen zijn ;))
Ik was alleen de smiley vergeten  XD, maar als ik in de text editor van het forum naar helemaal naar beneden scroll en iets typ springt deze weer een regel terug :S. (Een oplossing zou btw welkom zijn ^^)

Edit: main.cpp
Ik gebruikt eerst een zevende element in abcformule_array[] die gebaseerd is op het eerste element (de discriminant). Daar dit zevende element gebaseerd is op conditionele statements die ik later weer uitvoer, kan ik ook simpelwerg later die conditionele statements uitvoeren op het eerste element. Daar zou ik werkruimte mee sparen en het programma iets sneller mee laten lopen. Hoewel Stroustrup het gebruik van arrays afraadt, heb ik er toch een gebruikt. Daar ik (nog :P) niet weet hoe vectors werken en aparte variabelen ten kosten zouden gaan van inkapseling vind ik mijn oplossing prima ^^.

Als iemand nog een tutorial, guide etc. over input van een gebruiker in Qt naar variabelen wegschrijven of de scope van variabelen in Qt, vindt, zou ik daar zeer geholpen mee zijn.

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: C++ GUI toolkit/ controlle class
« Reactie #3 Gepost op: 2009/07/24, 23:31:56 »
Scope van variabelen in Qt is hetzelfde als "normale C++".
Met de toevoeging dat QObject-derived objects waaraan een parent QObject is toegewezen automatisch verwijderd worden wanneer het parent object verwijderd wordt.
Maar daar moet je je niet druk om maken. In de praktijk zorgt dit systeem er enkel voor dat er minder kans is op memory leaks bij het dynamisch alloceren van QObjects ;)

Arrays zijn prima. Ik heb nooit een boek van stroustrup gelezen, maar ik ben van mening dat je altijd een afweging moet maken tussen de beschikbare types. Een vector is misschien wel handiger en veiliger, maar vereist wel wat meer geheugen en heeft vaak een tragere zoektijd. In Qt zou je bijvoorbeeld QList, QLinkedList, QVector, QHash... kunnen gebruiken.

Input van een gebruiker: hoe wil je die input opvragen, via een tekstveld op een formulier? Ik ben ooit begonnen aan een simpele basisgids Qt 4 met Qt Creator, maar heb deze nooit afgewerkt. Het is echter wel een goed startpunt http://vidiqatch.org/qt4gids/ (het licentieverhaal in mijn gids klopt trouwens niet; de gratis LGPL-versie van Qt 4 staat je toe om commerciële programma's te ontwikkelen zonder de source code te moeten vrijgeven zolang je dynamisch linkt aan Qt en zolang je de Qt library zelf niet aanpast)

De links die ik je gaf zijn echter veel uitgebreider, als je daar gaat zoeken naar wat je nodig hebt kom je er wel.
Dit is overigens ook nog een handige handleiding, voor Qt Creator specifiek: http://doc.trolltech.com/qtcreator-1.2/index.html
« Laatst bewerkt op: 2009/07/24, 23:33:38 door profoX »
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

1Swat

  • Gast
Re: C++ GUI toolkit/ controlle class
« Reactie #4 Gepost op: 2009/07/25, 10:58:39 »
Citaat van: Bjarne Stroustrup, The C++ Programming Language Special Third Edition, page 14 §1.6.1
[5] Minimize the use of arrays and C-style strings. The C++ standard library s t r i n g (§3.5) and
v e c t o r (§3.7.1) classes can often be used to simplify programming compared to traditional C
style. In general, try not to build yourself what has already been provided by the standard
library.

:P

Any way, Thank you.
Hier kan ik wel een tijdje mee vooruit.

1Swat
« Laatst bewerkt op: 2009/07/25, 12:18:10 door 1Swat »