Quali sono gli angoli pericolosi di Qt? [chiuso]

10

Non c'è niente di perfetto sotto il sole. Qt non fa eccezione e ha delle limitazioni: non possiamo usare pixmap in un thread diverso dalla GUI, non possiamo usare QImage con il formato immagine a 16 bit per canale, ecc.

Quali situazioni ti hanno costretto a rovinare il design a causa dei limiti di Qt?
Quali sono le peculiarità più odiate?
Quali decisioni di progettazione dovresti evitare mentre utilizzi Qt nei suoi progetti?

    
posta vines 30.05.2011 - 17:55
fonte

4 risposte

12

Ironia della sorte, direi che il potere di Qt è anche uno degli inconvenienti. Ci sono così tante potenti costruzioni ed estensioni, il codice che scrivi in Qt diventa facilmente molto radicato nel "modo Qt". Cercare di estrarre funzionalità in un'altra lingua non significa soltanto riscrivere, è necessario conoscere molte tecnologie specifiche per Qt.

L'ampiezza di Qt significa che assumere programmatori significa impegnarsi in qualcuno con esperienza Qt o formazione per quella competenza. Ottenere un appaltatore e velocizzare è più difficile di vanilla C ++.

Quando Qt è cambiato da 3.x a 4.x, il nostro team ha impiegato quasi 9 mesi per eseguire la porta, durante il quale sono state aggiunte nuove funzionalità. Speri di compensare i maggiori costi di aggiornamento con una maggiore efficienza di sviluppo per il resto del tempo. (Nota, ho omesso i vantaggi di Qt, di cui ce ne sono anche molti)

    
risposta data 22.06.2011 - 01:34
fonte
9

Qt non usa la libreria standard C ++ , ma ha il suo QString, QVector, QMap, ...

Questo significa che devi prendere una decisione importante sul design: quali parti dell'applicazione useranno QString e quali parti useranno std :: string?

Usando std :: string in alcune parti e QString in altre parti, significa che dovrai convertire tra QString e std :: string sui confini.

Per evitare questo sovraccarico, si potrebbe decidere di utilizzare QString su tutta l'applicazione. Ma ciò rende molto più difficile l'uso di librerie di terze parti che non sono basate su Qt, ad es. spinta.

(Si noti che lo stesso vale per std :: map vs QMap, std :: vector vs QVector e così via)

Decidere quali parti usano i tipi di Qt e quali parti usano l'STL è una decisione progettuale importante, con importanti implicazioni. E solo perché Qt si rifiuta di usare la libreria standard C ++.

IMHO, quella decisione potrebbe andare in entrambi i modi, a seconda del progetto. Quindi non posso rispondere alla tua domanda quale evitare.

    
risposta data 14.07.2011 - 13:25
fonte
3

Questo non risponde direttamente alla domanda, ma penso che sia degno di menzione: forse l'aspetto più "pericoloso" di Qt è che Nokia è entrata a letto con MSoft ...

    
risposta data 14.07.2011 - 04:03
fonte
2

Recentemente ho scoperto che un QChar, nonostante il suo nome, in realtà non corrisponde a un carattere ma a un'unità di codice UTF-16. Pertanto, quando si desidera eseguire la scansione di un testo Unicode arbitrario carattere per carattere, è necessario aggiungere algoritmi per trattare con surrogati alti e bassi, combinando caratteri e simili.

    
risposta data 19.08.2011 - 21:17
fonte

Leggi altre domande sui tag