Não há nada perfeito sob o sol. O Qt não é exceção e possui limitações: não podemos usar pixmaps em um thread que não seja a GUI, não podemos usar o QImage com formato de imagem de 16 bits por canal, etc.
Quais situações o forçaram a estragar o design por causa das limitações do Qt?
Quais são as peculiaridades mais odiadas?
Quais decisões de design se deve evitar ao usar o Qt em seus projetos?
qt
design-decisions
videiras
fonte
fonte
the
é obrigado acorners
aqui, nãoQt
, mas é apenas a minha sensação intuitiva, desde que eu sou russo :)Respostas:
Ironicamente, eu diria que o poder de Qt também é uma das desvantagens. Existem tantas construções e extensões poderosas que o código que você escreve no Qt se torna facilmente entrincheirado da "maneira do Qt". Tentar extrair a funcionalidade para outro idioma não significa apenas reescrever, você precisa conhecer muita tecnologia específica do Qt.
A amplitude do Qt significa que contratar programadores significa comprometer-se com alguém com experiência no Qt ou treinar para esse conhecimento. Colocar um contratado atualizado e atualizado é mais difícil que o C ++ básico.
Quando o Qt mudou de 3.x para 4.x, nossa equipe precisou de quase 9 meses para fazer a porta, período durante o qual pouca funcionalidade foi adicionada. Você espera compensar esse grande custo de atualização, aumentando a eficiência do desenvolvimento pelo resto do tempo. (Observe, eu omiti as vantagens do Qt, das quais também existem muitas)
fonte
O Qt não usa a biblioteca C ++ padrão , mas possui seu próprio QString, QVector, QMap, ...
Isso significa que você precisa tomar uma decisão importante no design: quais partes do aplicativo usarão QString e quais partes usarão std :: string?
O uso de std :: string em algumas partes e QString em outras partes significa que você precisará converter entre QString e std :: string nos limites.
Para evitar essa sobrecarga, pode-se optar por usar o QString em todo o seu aplicativo. Mas isso torna muito mais difícil o uso de bibliotecas de terceiros que não são baseadas no Qt, por exemplo, boost.
(Observe que o mesmo se aplica a std :: map vs QMap, std :: vector vs QVector e assim por diante)
Decidir quais peças usam os tipos de Qt e quais peças usam o STL é uma decisão de projeto importante, com grandes implicações. E apenas porque o Qt se recusa a usar a biblioteca C ++ padrão.
IMHO, essa decisão poderia ser de qualquer maneira, dependendo do projeto. Portanto, não posso responder à sua pergunta, qual evitar.
fonte
Isso não responde diretamente à pergunta, mas acho que vale a pena mencionar: talvez o aspecto mais 'perigoso' do Qt seja que a Nokia tenha se deitado com a MSoft ...
fonte
Recentemente, descobri que um QChar, apesar do nome, na verdade não corresponde a um caractere, mas a uma unidade de código UTF-16. Portanto, quando você deseja varrer um caractere de texto Unicode arbitrário por caractere, é necessário adicionar algoritmos para lidar com substitutos altos e baixos, combinando caracteres e similares.
fonte