2009-02-25 20 views
19

Sto scrivendo un programma di analisi dei dati abbastanza grande e complesso e ho raggiunto il punto in cui penso che sia giunto il momento di costruire una GUI per il programma. Quindi la mia domanda è:Toolkit Gui, che dovrei usare?

Quale toolkit GUI dovrei usare?

Sono completamente nuovo nella codifica e nella creazione di GUI e apprezzerei qualsiasi guida che possa essere offerta. Non deve essere il kit di strumenti più semplice del mondo, imparo piuttosto velocemente. Tuttavia, deve essere in grado di fare le seguenti cose (alcune se non tutte sono probabilmente incredibilmente basilari per ogni kit di strumenti dato, ma ho pensato che sarebbe stato utile buttare tutto questo là fuori nel caso in cui fosse).

Deve consentirmi di disegnare direttamente sullo schermo in modo da poter inserire grafici (spettri davvero), grafici e cose simili per l'utente. Devo essere in grado di raccogliere informazioni sulla posizione su cui hanno fatto clic sugli spettri sopra menzionati. Devo essere in grado di visualizzare il testo e prendere l'input del testo da parte dell'utente. Deve essere in grado di generare menu (conosci File, Modifica, ecc.). Se dovesse avere un widget incorporato per generare tabelle che sarebbe utile (anche se posso superarne una mancanza se posso disegnare direttamente sullo schermo). Deve essere in grado di far apparire gli avvisi, le finestre di dialogo, salvare e aprire le scatole, ecc. Questo è praticamente tutto, la maggior parte di questi sembra piuttosto semplice quando li scrivo ma non voglio che la GUI sia parzialmente codificata e quindi rendersi conto che ho bisogno di riscriverlo con un diverso toolkit.

Va notato che ho scritto questo programma in C++ e che non voglio dover scrivere la parte della GUI in C o qualcos'altro in modo che il toolkit abbia bisogno di supportare C++.

Inoltre, un kit di strumenti multipiattaforma sarebbe preferibile su un singolo toolkit di piattaforma. Tuttavia, se deve essere un singolo toolkit di piattaforma, preferirei che sia per Linux.

Infine, preferirei DRAMATICAMENTE un toolkit open source a un toolkit closed source.

Oltre a ciò non riesco a pensare a nulla da aggiungere. Grazie in anticipo per il tuo tempo e le tue risposte.

Hmmm in base alle risposte, vedrò sia Qt che wxWidgets e vedrò quale altro appelle a me. Io con I potrei accettare più risposte come accettate ma non posso, e visto che guardo due cose sarebbe ingiusto accettare solo una delle risposte, forse in una settimana o due, poi ho visto i toolkit e ho capito fuori che voglio usare.

risposta

26

Per C++, a mio parere, Qt è il toolkit meno frustrante e più completo. È anche completamente multipiattaforma. Si noti che Qt sarà concessa in licenza LGPL qualche volta nel marzo 2009, quando la versione 4.5 sarà disponibile. Attualmente è disponibile solo in versione GPL e licenza commerciale.

Il progettista della GUI di Qt è buono. Ha molte funzioni di utilità (libreria di grafici di scene, supporto per la traduzione, motore Javascript incorporato, libreria WebKit integrata). Attraverso il MOC (uno speciale pre-compilatore) porta anche alcune funzionalità di binding a tempo di esecuzione e l'introspezione al C++.

Per la tua applicazione tecnica, potresti scoprire che Qwt (http://qwt.sourceforge.net/) fornisce ciò di cui hai bisogno. È costruito su Qt.

Qt può anche essere utilizzato "senza testa" se si desidera il supporto dell'utilità (come rete, ecc.) Senza una GUI.

L'altra opzione C++ multipiattaforma è wxWidgets, che è utilizzabile ma non proprio paragonabile a Qt. È un toolkit di livello molto inferiore e non è facile da usare o completamente arrotondato.Gtkmm è un'altra opzione, nello spirito di GTK +.

+0

C'è un'altra opzione C++: FLTK. Certo, è orientato verso le applicazioni OpenGL, ma è un'API C++ pienamente funzionale, ed è sotto un LGPL modificato (con un'eccezione di collegamento statico). – greyfade

+0

Gtkmm funziona anche su Windows. – drby

+1

I secondo il suggerimento Qt. Secondo la mia esperienza, Qt è la più alta qualità, disponibile con tutti gli strumenti della GUI multipiattaforma. –

1

Qt. Inoltre puoi usare KDE che è costruito sopra Qt.

+0

Forse questa è una domanda stupida ma non è KDE praticamente solo Linux? –

+0

Non è una domanda stupida ;-) KDE è _mostly_ usato su Linux, ma puoi scrivere un'applicazione usando le librerie di KDE e in linea di principio non c'è nulla che impedisca l'esecuzione su Windows. –

4

Direi che dipende dal fatto che si desideri o meno il look and feel nativo dei sistemi operativi per il quale si è scelto l'applicazione. Qt, come detto prima, è probabilmente il più facile tra i toolkit cross-platform da usare, tuttavia è il suo set di widget. Non si ottiene l'aspetto di un'app nativa & a meno che non si stia eseguendo su KDE.

Io uso wxWidgets al lavoro. Può essere frustrante a volte e in alcuni luoghi non molto lucido, ma dà l'aspetto e il tocco nativo per le piattaforme che stai prendendo di mira. In realtà racchiude i controlli dell'interfaccia utente nativa per fornire loro un'API comune su tutte le piattaforme su cui viene eseguito il wxWidgets.

+1

L'aspetto grafico di Qt sulle piattaforme è stato notevolmente migliorato in termini di integrazione con il desktop. Su Windows, sembra davvero un'app di Windows. Lo stesso con OS X, barra dei menu dell'applicazione e tutto. –

+0

Mentre è vero, si continua a utilizzare diversi set di classi per obiettivi Windows e target Mac. Da QMacStyle per OS X e da QWindowsXPStyle per Windows, mentre wxWidgets ha una singola API per tutte le piattaforme –

+0

Penso che tu abbia frainteso il modo in cui gli stili funzionano in Qt. L'API attuale è identica, il motore di stile è un componente separato, che spesso non deve nemmeno essere toccato. L'unico caso per passare un comportamento speciale è lo styling dei propri widget personalizzati, che è qualcosa che wx non gestisce neanche. –

3

Vorrei anche raccomandare wxWidgets insieme a DialogBlocks, che è un vero e proprio costruttore di GUI visuale.

Dirò che wxWidgets ha alcuni spigoli, ma la comunità di sviluppo è molto attiva ed estremamente reattiva alle segnalazioni di bug/domande/contributi.

6

Vedo che nessuno ha commentato il GTKmm. È l'incarnazione C++ di GTK +, ed è un vero piacere da usare. Ho anche usato Qt, ma non mi piace il segnale disordinato/codice di connessione, i file generati da moc_XXX, ecc. GTKmm ha segnali e simili, ma non quel passo di pre-elaborazione, così come quasi tutto il toolkit Qt può offrire in l'arena della grafica.

+0

Per non parlare del fatto che Gtk è più comune in Linux, quindi gli utenti saranno più abituati all'aspetto della tua applicazione. – Lalaland

+0

Quando si utilizza CMake, il materiale "moc" viene gestito automaticamente e senza la necessità di alcuna gestione da parte dell'utente. – antonone

4

Ho avuto la stessa domanda e ho cercato buoni toolkit GUI.

Alla fine ho scoperto che un toolkit GUI non è sufficiente: ho bisogno di una soluzione completa indipendente dalla piattaforma che mi fornisca l'ambiente di sviluppo, l'integrazione IDE e funzioni di livello inferiore come socket di rete e I/O di file.

Il mio risultato? Da quasi 9 anni uso Qt (ma i primi anni solo per le GUI) - ora ho applicazioni di rete altamente complesse con bilanciamento del carico, enorme multithreading e elaborazione delle immagini.

È possibile utilizzare Qt come utente commerciale con supporto professionale (come me) o solo avviare i propri progetti in GPL e con 4.5 con LGPL (che consente l'uso commerciale).

Le altre alternative come wxWidgets e GTK ++ sono scelte molto buone per la programmazione GUI.

Ma se si desidera una soluzione ben documentata e completa, Qt è la vostra scelta.

migliori saluti, 3DH

0

io uso wxWidgets (toolkit) + wxFormBuilder (gui-designer) + eclipse (ide). Tutti gli strumenti sono multipiattaforma e gratuiti.