Snyggt platformsoberoende GUI toolkit

Tråden skapades och har fått 17 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Smygehamn
  • 2004-05-28 10:44

Hej. Jag kollar efter ett bra GUI toolkit som ser bra ut på Mac, Linux och Windows.
Har bara utvecklat på Linux och Windows innan, men har blivit lite av en smygswitcher på
senare tid (efter att jag fick låna en gammal imac..), så min nästa dator blir definitift en mac, och självkart ska mina program fungera på den också. Så min fråga är om någon har erfarenhet av bra GUI toolkits som är platformsoberoende? Är t.ex. wxWidgets bra på Mac? Eller ska man kanske hålla sig till javas gui klasser? Finns det fler bra system?
(qt verkar tyvärr kosta rätt mycket till windows så det är inte så attrativt).

  • Medlem
  • Linköping
  • 2004-05-28 12:05

Vill du knacka Java så kan du även titta på SWT som alternativ till Swing, det är det toolkit som utvecklades för Eclipse och många tycker om det. Gällande andra språk: wxWindows (tänkte du väl på?) finns på Mac men jag är inte hundra på hur bra det egentligen funkar. GTK+ är ett alternativ om det är OK att det körs under X11 på OSX, nativeversion till OSX är under utveckling men inte att lita på ännu, tror jag.

olov

  • Medlem
  • Smygehamn
  • 2004-05-31 21:04
Ursprungligen av olov:

Vill du knacka Java så kan du även titta på SWT som alternativ till Swing, det är det toolkit som utvecklades för Eclipse och många tycker om det. Gällande andra språk: wxWindows (tänkte du väl på?) finns på Mac men jag är inte hundra på hur bra det egentligen funkar. GTK+ är ett alternativ om det är OK att det körs under X11 på OSX, nativeversion till OSX är under utveckling men inte att lita på ännu, tror jag.

olov

Har kollat lite lätt på SWT i helgen, och det verkar ju ascoolt ! Har du använt det på Mac?
Ser det "rätt" ut på OS X? Har du provat java med gcj+swt?

  • Oregistrerad
  • 2004-05-28 13:02

Du kan ju prova REALbasic, kompilerar för Mac OS X, Classic, Windows och Linux

Har testat Aqua-portningen av wxWidgets, men det kändes lite för buggigt för att riktigt kunna vara ett alternativ än på ett tag. GUI-element hade liksom en tendens att bete sig allmänt konstigt och dessutom "fastna" ovanpå allt annat i GUI:t, och det var milt sagt störande. Det var iofs kanske två eller tre månader sedan, och de buggarna kanske har hunnit bli fixade sedan dess. FOX och GTK+ fungerar båda riktigt bra, men då blir man ju som sagt bunden till X11. Annars finns ju Tk numera i Aqua-tappning också

  • Medlem
  • Smygehamn
  • 2004-05-28 14:27
Ursprungligen av Samuel K:

Har testat Aqua-portningen av wxWidgets, men det kändes lite för buggigt för att riktigt kunna vara ett alternativ än på ett tag. GUI-element hade liksom en tendens att bete sig allmänt konstigt och dessutom "fastna" ovanpå allt annat i GUI:t, och det var milt sagt störande. Det var iofs kanske två eller tre månader sedan, och de buggarna kanske har hunnit bli fixade sedan dess. FOX och GTK+ fungerar båda riktigt bra, men då blir man ju som sagt bunden till X11. Annars finns ju Tk numera i Aqua-tappning också

Lyckas inte ens få wxWidgets att kompilera (provat både 2.4.2 och 2.5.1) så jag lägger ner det för tillfället. Jag vill helst ha någonting som ser "native" ut på alla platformarna (därav java och wx), men man kan ju inte få allt :rolleyes: Tack för tipsen, jag ska kolla mer på dem.

Ursprungligen av Jan Erik Moström:

Du kan ju prova REALbasic, kompilerar för Mac OS X, Classic, Windows och Linux

Lite sidospår från mig nu, men...

Fungerar det bra? Jag kan alltså göra windowsprogram på min mac utan några problem?

  • Oregistrerad
  • 2004-05-28 18:43
Ursprungligen av CoolUmbo:

Lite sidospår från mig nu, men...

Fungerar det bra? Jag kan alltså göra windowsprogram på min mac utan några problem?

Jag har utvecklat Windows program på min Mac och jag det finns ganska många andra som har gjort samma sak.

  • Medlem
  • Stockholm
  • 2004-05-28 15:59
Ursprungligen av sverre:

Hej. Jag kollar efter ett bra GUI toolkit som ser bra ut på Mac, Linux och Windows.
Har bara utvecklat på Linux och Windows innan, men har blivit lite av en smygswitcher på
senare tid (efter att jag fick låna en gammal imac..), så min nästa dator blir definitift en mac, och självkart ska mina program fungera på den också. Så min fråga är om någon har erfarenhet av bra GUI toolkits som är platformsoberoende? Är t.ex. wxWidgets bra på Mac? Eller ska man kanske hålla sig till javas gui klasser? Finns det fler bra system?
(qt verkar tyvärr kosta rätt mycket till windows så det är inte så attrativt).

Det finns många lösningar till detta problem, men min erfarenhet är att det är svårt att äta kakan och ha den kvar.

"Problemet" med macanvändare är att de i stort är hyperkänsliga mot program som inte riktigt "känns rätt", vilket ofta är fallet med "raka" portar så som RealBasic-apps, Swing-apps och liknande.

Så mitt tips: Skriv din logik-kod (oavsett språk) i standard C/C++/java/ med väl uttänkt design och skriv sedan gränssnittskoden individuellt för varje plattform. Om man använder bra verktyg brukar inte mer än 10% vara gränssnittskod (förmodligen ännu mindre med Cocoa!). Att skriva om denna kan i vissa fall vara en bra trade-off mot att få ett program som passar perfekt in i miljön på alla plattformar.

  • Oregistrerad
  • 2004-05-28 18:46
Ursprungligen av kalleh:

Om man använder bra verktyg brukar inte mer än 10% vara gränssnittskod (förmodligen ännu mindre med Cocoa!).

Det där tyckte jag var intressant, vilken typ av program tänker du dig då?

  • Medlem
  • Stockholm
  • 2004-05-28 21:31
Ursprungligen av Jan Erik Moström:

Det där tyckte jag var intressant, vilken typ av program tänker du dig då?

Ja, vilken typ av program av någorlunda storlek tycker du det *inte* passar in på?

/Kalle

  • Medlem
  • 2004-05-30 16:14

En fördel med Qt är att det transformerar C++ till ett helt nytt programspråk. Om man som jag tycker att C++ är ett feldesignat språk, så kan man dra nytta av att Qt tillför mer introspection och runtime-orienterade features. C++ är ju ett statiskt språk, allting händer i compile-time. Tack vare Qt:s basklass QObject så blir det ett riktigt bra runtime-språk, och det är väsentligt när man ska koda ett GUI.

Exempel på vad man kan göra i Qt:
döpa ett objekt när det skapas, och senare hämta pekare till objekt baserat på namnet.
fråga ett objekt om det är av en viss klass, och vilka klasser det ärver av.
få klass 1 att anropa metoder på en instans av klass 2 utan att den behöver känna till interfacet för klass 2. Detta kallas signals och slots, och har man inte Qt måste motsvarande funktionalitet implementeras med observer pattern.
anropa get/set-metoder baserat på en sträng innehållande egenskapens namn (liknar key-value coding i Obj-C)
XML-baserat format för att definiera dialogrutor, med en OK editor, Qt Designer (motsvarar nib filer i Obj-C och Interface Builder).
Sist men absolut inte minst: Qt definierar cross-platform klasser för det som händer bakom kulisserna: trådar, xml-parsning, nätverkskommunikation, med mycket mera.

Objective C är också ett utmärkt runtime-språk och lämpar sig också mycket bra att programmera GUI:n i. Jag skulle vilja påstå att kombinationen Obj-C + XCode + Interface builder är storleksordningar bättre än Qt, men funkar tyvärr bara på mac.

  • Medlem
  • Linköping
  • 2004-05-31 09:55
Ursprungligen av gnrv:

C++ är ju ett statiskt språk, allting händer i compile-time.

Nä. (Utan att säga emot dig om att Qt är ett bra klassbibliotek). Virtuella metoder, dynamiska typomvandlingar och RTTI. Compile-time?

olov

  • Medlem
  • 2004-05-31 11:41
Ursprungligen av olov:

Nä. (Utan att säga emot dig om att Qt är ett bra klassbibliotek). Virtuella metoder, dynamiska typomvandlingar och RTTI. Compile-time?

olov

Jag vet att det finns folk som inte håller med mig om att C++ är ett feldesignat programspråk (men jag vet inte varför ), så därför skrev jag en disclaimer i början av min post "Om man som jag tycker att C++ är ett feldesignat programspråk"

Historisk notis: Orsaken att Qt använder ett eget RTTI-system var att inte alla stora C++ kompilatorer stödde RTTI på den tiden. Qt har ju funnits i många år nu.

  • Oregistrerad
  • 2004-05-31 12:21
Ursprungligen av gnrv:

C++ är ett feldesignat programspråk (men jag vet inte varför )

Å fasen, är det designat

Ursprungligen av gnrv:

Objective C är också ett utmärkt runtime-språk och lämpar sig också mycket bra att programmera GUI:n i. Jag skulle vilja påstå att kombinationen Obj-C + XCode + Interface builder är storleksordningar bättre än Qt, men funkar tyvärr bara på mac.

Nu är jag ingen Cocoa-programmerare och kan rätt lite Obj-C, men borde det inte gå att åstadkomma ungefär det du efterfrågar med hjälp av GNUstep? Iofs är GNUstep-API:erna inte riktigt lika omfattande som Cocoa, men du får Obj-C, ett XCode-liknande IDE (ProjectCenter) och Gorm, som ungefär motsvarar Interface Builder. Enda haken är att man behöver cygwin eller mingw för Windows-kompatibilitet, men även om det är lite bökigare kostar det iaf inte en massa pengar (som Qt för Windows gör).

  • Oregistrerad
  • 2004-05-31 12:20
Ursprungligen av kalleh:

Ja, vilken typ av program av någorlunda storlek tycker du det *inte* passar in på?

/Kalle

Det är ju en fråga om vad man menar med någurlunda storlek och vilken typ av program man använder, en ordbehandlare består nog till största delen av GUI kod, alla de program jag skriver består till största delen av GUI kod (OK, bortsett från scripts etc). Men jag vill inte påstå att mina program är av nån större storlek.

  • Medlem
  • Linköping
  • 2004-06-03 13:20

Jag har inte kodat SWT alls. Kombinationen GCJ och SWT fungerar alldeles utmärkt (det är ju en perfekt match egentligen eftersom GNU's classpath saknar Swing och SWT är open source), det finns flera sidor på nätet som beskriver sätt att komma igång. Enklast är nog om du drar ner sourcen till GCC och bygger den med GCJ (eftersom GCC på OSX bara innehåller C och C++), beskrivs här: http://users.bestweb.net/~john3g/gcj_on_osx.html

Om du vill få en känsla för hur SWT ser ut på OSX först gör du enklast i att ladda ner den senaste Eclipse-builden, det har kritiserats för att vara segt på OSX tidigare men jag tror de håller på att fixa / har fixat det.

Posta gärna igen och beskriv hur det gick med SWT-äventyren, lycka till!

olov

1
Bevaka tråden