Che cosa si dovrebbe cercare quando si sceglie una libreria C ++ per la GUI multipiattaforma?

8

Come programmatore C ++ di apprendimento, sto provando a selezionare una struttura o una libreria GUI per i miei progetti.

Ho una certa esperienza con Qt: è molto semplice, ha una documentazione molto buona e fornisce molti strumenti, ma sembra duplicare gran parte della libreria standard.

Sono tutte le librerie C ++ della GUI come questa? Cosa dovrei cercare in una libreria GUI? Come faccio a determinare quale sarebbe meglio dare un particolare problema? Dovrei concentrarmi su una libreria specifica o ne vale la pena di conoscerne alcune in quanto potrebbero servire a scopi diversi?

    
posta BenjaminB 01.07.2011 - 18:52
fonte

5 risposte

6

Qt: it's very straightforward,

Non qualcosa che è generalmente vero per le librerie, ma il meccanismo segnale / slot di Qt è una soluzione piuttosto buona

it has a very good documentation,

Qt e WX forniscono entrambi ottimi documenti, sia di riferimento che tutorial

and provides a lot of tools,

Qt ha bisogno di strumenti, altre librerie non richiedono nulla oltre al normale compilatore - specialmente quelli che usano i layout di tipo sizer non hanno nemmeno bisogno di un editor di gui.

but it seems to duplicate a lot of the standard library.

Questo è comune semplicemente perché solo un paio di anni fa non si poteva fare affidamento su std lib e l'STL era presente o funzionante su tutte le piattaforme. Anche oggi questo è sempre vero su piattaforme mobili. Spesso però non devi usare le loro classi di raccolta, o trovi che sono plug-in compatibili con quelle stl

How do I determine which one would be best given a particular problem?"

In generale, è necessario che una libreria gui faccia problemi di tipo app desktop di tipo standard o interfacce mobili / web altamente configurabili. Spesso la GUI Lib ha un sapore per entrambi, come Qt e QWT

    
risposta data 03.07.2011 - 02:24
fonte
4

Are all C++ GUI libraries like this?

Non provare a racchiudere tutto in un unico descrittore. Ci saranno sempre biblioteche che sono scarsamente o addirittura prive di documenti. Potrebbero reinventare la ruota il 90% delle volte o fornire alcune nuove funzionalità rivoluzionarie.

What should I be looking for in a GUI library?

Dovresti cercare una libreria che risolva le tue esigenze nel modo più efficiente possibile. Per efficienza intendo una combinazione di codice-saggio e prestazioni. Ovviamente se la libreria ricorda il Perl offuscato, non si vorrebbe usarlo per il codice di produzione anche se fornisce un'esecuzione estremamente veloce. Al contrario, non vuoi qualcosa di estremamente dettagliato ma con una velocità di esecuzione ostacolata.

How do I determine which one would be best given a particular problem?

Non esiste sempre un modo definitivo per determinare quale sia il migliore X per fare Y . Se riesci a trovare qualche tipo di dati non distorti in relazione al tuo problema e alle soluzioni offerte dalle biblioteche che sono unidirezionali. La conoscenza e l'esperienza sono anche i modi migliori per determinare in che modo una soluzione si adatta alle tue esigenze.

Should I focus on one specific library, or is it worth it to know several of them as they might serve different purposes?

Questo dipende esclusivamente da ciò che fai e da quali sono le tue esigenze. Se hai bisogno di lavorare su X allora dovresti imparare la migliore libreria per questo. Se lavori sempre e solo su una cosa e hai una libreria adatta alle tue esigenze, perché preoccuparti? *

* Nota: non fa mai veramente male sapere di più, sto solo dicendo da un punto di vista prettamente "Getting the job done".

    
risposta data 03.07.2011 - 02:10
fonte
2

How do I determine which one would be best given a particular problem?

Avendo fatto dozzine di porte GUI e applicazioni GUI multipiattaforma dal 1989, ho trovato che la prima domanda che devi sempre decidere è look-and-feel . Le librerie della GUI multipiattaforma funzionano in questo modo in uno spettro.

Aspetto simile ovunque

Funzionano meglio se il tuo software è rivolto a persone che devono cambiare frequentemente le piattaforme e vogliono che il loro software si comporti in modo identico ovunque. Questo è comune in alcune applicazioni scientifiche, dove potresti essere una persona Linux che visita un laboratorio Mac, o qualcuno ti dà un sacco di boxen Windows come parte di una sovvenzione.

Esempi di tali librerie sarebbero Tk e GTK +.

Piattaforma look-and-feel nativo ovunque

Sono molto meglio per le applicazioni commerciali e gli utenti non tecnici, perché queste persone sono molto più interessate a un'interfaccia utente familiare. In effetti, è probabile che si rifiutino di utilizzare software che non hanno un aspetto nativo.

Esempi di tali librerie sarebbero wxWidgets, RealBasic, Cocotron e Qt.

Una volta presa questa decisione, puoi iniziare a esaminare il tuo dominio del problema in modo più dettagliato e determinare quale particolare toolkit sarà più adatto.

    
risposta data 03.07.2011 - 05:05
fonte
2

Sotto gli aspetti tecnici dovresti dare un'occhiata da vicino alle licenze. Qt è gratuito solo per lo sviluppo open source non commerciale. Se inizi ad usarlo in altre aree come il lavoro a contratto, devi assicurarti che tu e il tuo cliente o azienda potete utilizzarlo e che i costi siano accettabili per tutte le parti coinvolte.

modifica: come Raphael dice che mi sbaglio sulla licenza di Qt. Comunque penso che sia una parte importante del processo decisionale per una libreria della GUI che qualcuno potrebbe voler usare, per assicurarsi che possa farlo in modo legale.

    
risposta data 03.07.2011 - 04:25
fonte
1

A parte la tecnicità della scelta, un altro punto è la disponibilità degli sviluppatori con la conoscenza dello strumento scelto, per la vita del prodotto. Questo dovrebbe essere un driver primario nella scelta di tutti gli strumenti di sviluppo nel mondo commerciale. Se è solo per te, allora fai ciò che vuoi, ma se non lo fai, segui uno o più strumenti che gli sviluppatori conoscono, vogliono sapere e sono ben noti. È molto più facile reclutare un appaltatore o un dipendente per un'app per Java / Swing o C ++ / QT piuttosto che un app ADA / (completa il tuo toolkit GUI non ascoltato qui).

Il kit di strumenti si sceglie "avanzamento di carriera" per te e per tutti gli altri, o sarebbe una responsabilità per un curriculum?

    
risposta data 04.07.2011 - 01:04
fonte

Leggi altre domande sui tag