Quali sono gli angoli pericolosi di Qt? [chiuso]


10

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

Quali situazioni ti hanno costretto a rovinare il design a causa delle limitazioni di Qt?
Quali sono le stranezze più odiate?
Quali decisioni progettuali dovresti evitare mentre usi Qt nei suoi progetti?


Sai dire il Qt? Se lo si espande in "Q Toolkit", è possibile aggiungere un "the" di fronte, ma è corretto / buona pratica dire il Qt? Solo curioso.
Anto

@Anto: suppongo che non thesia legato a cornersquesto, Qtma è solo la mia sensazione intuitiva, dato che sono russo :)
viti

Una possibile curva pericolosa è che il progetto potrebbe essere in difficoltà finanziarie. Nokia ha recentemente firmato un accordo con Microsoft (per utilizzare Win7 sui propri telefoni) che pone il futuro di Qt su un terreno instabile.
Peter Rowell,

sono molto interessato a conoscere questa risposta perché sono un noob di programmazione visiva C ++: D
Shaheer

@Vines: Che ne dici di "Quali sono gli angoli pericolosi di QT?"?
Chris,

Risposte:


12

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

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

Quando Qt è passato da 3.xa 4.x, il nostro team ha impiegato quasi 9 mesi per eseguire il port, durante il quale sono state aggiunte poche nuove funzionalità. Speri di compensare i maggiori costi di aggiornamento aumentando l'efficienza di sviluppo per il resto del tempo. (Nota, ho omesso i vantaggi di Qt, di cui ce ne sono anche molti)


2
La porta da Qt3 a Qt4 è stata difficile per la maggior parte delle persone che conosco. Questo QML e cose simili che sono state introdotte nelle versioni più recenti mi fanno preoccupare, dal momento che potrebbe significare ancora una volta una porta complicata.
Vitor Py,

10

Qt non utilizza la libreria C ++ standard , ma ha i propri QString, QVector, QMap, ...

Ciò significa che devi prendere un'importante decisione di progettazione: 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 limiti.

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

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

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

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


1
Sono d'accordo, ma vorrei andare al limite e dire che il QString (ecc. Ecc.) È anche uno dei punti di forza poiché è così bello lavorare con loro.
Johan

1
Inoltre, non è poi così difficile usare una libreria che non usa QString. Esiste un metodo semplice per convertire un QString in uno std :: string e viceversa. Non molto.

@Glenn Nelson: Sì, al giorno d'oggi ci sono funzioni di conversione per QString; molto utile e conveniente! Ma soprattutto per QVector e QMap ci sarà un sovraccarico nella conversione (e soluzioni semplici non funzioneranno ad es. QVector <QString>); Tale sovraccarico dovrebbe essere considerato durante la progettazione per evitare problemi di prestazioni lungo la linea.
Sjoerd,

3

Questo non risponde direttamente alla domanda, ma penso che valga la pena menzionarlo: forse l'aspetto più 'pericoloso' di Qt è che Nokia si è messa a letto con MSoft ...


2
Ma hanno abbandonato Qt per farlo.
Martin Beckett,

1
Per completezza - La parte commerciale di Qt è ora di proprietà di Digia, mentre Qt è passata a un sistema di "governance aperta" in cui altri possono facilmente contribuire. C'è anche la base di KDE Free Qt che protegge Qt dall'andare a codice chiuso.
Vishesh Handa,

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 scansionare un testo Unicode arbitrario carattere per carattere, è necessario aggiungere algoritmi per gestire surrogati alti e bassi, combinando caratteri e simili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.