2010-11-29 25 views
5

Ho scritto un piccolo programma con Boost in C++. Funziona bene e quindi voglio dargli un'interfaccia grafica in modo che sia più facile da usare.
Per fare ciò, sto cercando una piccola struttura multipiattaforma che fornisca un aspetto e un aspetto nativi. Il supporto per Windows e Linux sarebbe sufficiente, attualmente non ho bisogno di os x ...Piccolo framework nativo multipiattaforma GUI per C++

Ho usato wxWidgets per qualche altro progetto, ma è stato un problema impostare tutto e spedire questa grande libreria con il software.
Ma sono rimasto davvero stupito dall'uso di veri controlli nativi. Per mantenere il programma piccolo ho anche provato fltk, ma ha un aspetto terribile.

Ho solo bisogno di un framework semplice senza supporto di rete o altri espedienti.

Quindi la mia domanda: esiste una struttura che soddisfi tutti i requisiti? O se no, quali strutture si adattano ad almeno alcune di queste esigenze?

Grazie in anticipo!

+0

Di quali controlli hai bisogno? –

+0

Tutti i controlli di base; pulsanti casella di testo campo di immissione radio e, se possibile, barra di avanzamento – tbolender

+6

Struttura della GUI multipiattaforma! = piccola. –

risposta

6

Quando si ha la parola "quadro" nel suo nome è quasi mai piccola.

In ogni caso, le strutture/librerie grafiche tendono ad essere grandi, perché devono gestire un sacco di cose.

Qt è probabilmente la migliore libreria semplice per la GUI multipiattaforma, ma sicuramente non costituisce un "piccolo framework". D'altra parte, su sistemi Linux, Qt sarà probabilmente già installato. Inoltre, sicuramente paga per le sue dimensioni.

-2

mai sentito parlare di QT ???

http://qt.nokia.com/products/

penso che dovrebbe adatta tutte le vostre esigenze

+3

Naturalmente;) Ma l'ho appena visto come una libreria potente ma anche molto grande paragonabile a wxWidgets. Ho sbagliato? – tbolender

1

Qt funziona in modo sorprendente, ma non è molto piccolo. Ho scoperto che esiste una vera mancanza di "piccole" GUI multipiattaforma. Potresti provare ad astrarre la tua GUI con #ifdefs ovunque, o usare Qt/wx.

+0

L'uso massiccio di #ifdefs non è assolutamente quello che voglio fare. Ma grazie :) – tbolender

4

wxwidgets è abbastanza piccolo per quanto riguarda i toolkit gui.

Ed è cross platform

http://www.wxwidgets.org/

Hai accennato, ma per quanto riguarda incrociati toolkit piattaforma andare E 'uno dei più piccoli che ho visto.

L'unico altro suggerimento che ho è che è possibile inserire il codice in una libreria C e collegarlo in un'altra lingua. per esempio. Usa .NET su Windows e mono per linux o anche un'applicazione basata su Java (anche se non sembrano sempre molto nativi per la piattaforma). Quindi usa la tua libreria da lì.

+0

Menziona wxWidgets nella domanda. Anche se sono d'accordo sul fatto che sia probabilmente più piccolo di Qt, è probabilmente il migliore che otterrà dai suoi parametri. –

0

Come altri già menzionati, non è possibile combinare la "piattaforma multipla" e le dimensioni ridotte nella stessa frase.

Più lavoro, più piccolo in dimensioni: Una soluzione che posso suggerire è di utilizzare il collegamento Python nativo per la parte dell'interfaccia utente. Dato che stai già usando boost, dovrebbe essere abbastanza banale avere Boost.Python che comunichi tra spazio C++ e spazio python. Hai già python su Linux e un pacchetto da 20-40 MB su Windows (non ricordo quanto è grande l'ultima versione).Ma qui dovrai usare win32 binding su windows e gtk/qt binding su linux, quindi più lavoro. Nah, troppo lavoro da mantenere, grattare questo.

Lavoro moderato, di dimensioni ridotte ma con controlli non nativi: Puoi provare a ottenere clutter o freeglut per far funzionare la tua interfaccia utente ma personalmente non li ho usati quindi non so se forniscono pieno cerca nativo per le tue app. Ma sono di piccole dimensioni rispetto a wx o qt.

Meno lavoro, più grande in dimensioni: Utilizzare WxWidgets se si è già a proprio agio con esso, altrimenti raccomando Qt.

si può anche avere uno sguardo ad alcune delle altre offerte: http://en.wikipedia.org/wiki/List_of_widget_toolkits

Clutter: http://www.clutter-project.org/about FreeGLUT: http://freeglut.sourceforge.net

+0

Per favore dimmi come intendi con l'uso di Clutter. Ho capito che è un framework per es. giochi come SFML. Ma non ho trovato la possibilità di creare controlli reali nei documenti. – tbolender

+0

Come ho detto, personalmente non ho usato la confusione, ma probabilmente non otterrete i controlli nativi usando il clutter. Molto probabilmente dovrai riprogettare l'interfaccia utente con qualcosa di simile alle app nei tablet. –

2

Ultimate++ potrebbe contenere quello che ti serve. (Anche se rendono il suono nella FAQ, come se la loro biblioteca è davvero grande, non sembra poi così male a me.)

+0

Sembra abbastanza interessante. Grazie per questo suggerimento, lo osserverò da vicino. Sai se questo framework è facile da configurare? – tbolender

+0

è sotto Windows, non so su Linux, sembra dipendere dalla distribuzione. –

1

non dimenticate di controllare juce così

+0

Sembra un'opzione. Emula i controlli? Non ero in grado di scoprirlo ... Ma grazie anche a te :) – tbolender

+0

per quanto ne so, sì, ma è da un po 'che ci ho giocato .. – stijn

+1

Sì, juce usa i suoi controlli e disegna tutto da graffiare. –

1

Se si vuole che essere piccoli, basta scrivere la GUI due volte - una volta in MFC e poi in X. La GUI sembra abbastanza semplice. Costruisci la tua piccola astrazione che è proprio ciò di cui hai bisogno.