Qt UI para projeto C++ existente
-
20-09-2019 - |
Pergunta
Já escrevi um programa C++ e gostaria de escrever uma GUI para ele.Sei que o Qt é uma ferramenta maravilhosa, porém, o Qt tem suas próprias classes, o que me deixa bastante confuso.por exemplo:em vez de String, Qt tem uma classe chamada QString.
Gostaria de saber se posso misturar código C++ e código Qt em C++?
Solução
Sim, você pode misturar QT e STL com muita facilidade.
A GUI leva QString
s, mas silenciosamente criará esse formulário std::string
ou char*
, QStrings
devolvido do QT pode ser convertido com toStdString()
ou toAscii()
.
O QT inclui um conjunto de classes de coleção, mas você não precisa usá -las.
O QT faz um bom trabalho de parecer C ++ moderno, existem alguns 'extras' para lidar com o mecanismo de sinal e slot, mas isso é mais uma complicação no ambiente de construção do que no código.
Editar: obrigado Bill
Outras dicas
Eu não recomendo misturar o código STD C ++ e o código QT.
Digamos que seu código C ++ é a lógica que o código QT deve ser apenas para a GUI. Usando um MVC/MVP ou da mesma forma, separe sua lógica e interface do usuário.
Assim, seria mais fácil no futuro poder executar seu código com/sem usar uma interface do usuário.
Em suma, sim, você pode! Por exemplo, um QSTRING é essencialmente uma string e possui um método ToAscii (), para que você possa usar facilmente o QT para seus projetos. Embora você possa ter alguns problemas para integrar o QT no Visual Studio (supondo que você o esteja usando), você poderá misturar o código C ++ e o código QT (que está em C ++)
sim! QT é algo que você pode usar no seu código C ++. O QT é principalmente para a GUI, mas são boas classes para soquete, contêineres, rede, ... você é livre para usar o STL e outras classes normais ou as que o QT oferece. O maior ponto é que, se você usar o QT no seu código antes da compilação principal, você deve fazer uma meta -compilação para prepará -lo para o compilador. Uma coisa que você deve notar é que o qt não é padrão, isso significa que, embora suporta Windows, Linux e Mac OS, não será utilizável em outras plataformas.
Eles podem ser usados juntos.
C++ tem uma longa história e a implementação e o suporte STL evoluíram com a linguagem.Acho que a equipe ex-Trolltech decidiu que não tinha controle suficiente sobre a qualidade e disponibilidade das implementações STL para fazer a biblioteca Qt depender disso.O resultado é que o Qt tem seu próprio QTL, cabeçalho QtAlgorithms e QString.
Eles tiveram o cuidado de torná-los compatíveis com o STL:
- a maioria dos contêineres possui uma interface semelhante aos STL (por exemplo:acesso do iterador, push_back(), vazio(), etc)
- Contêineres Qt podem ser convertidos de/para contêineres STL (por exemplo:QVector::toStdVector, QList::fromStdList)
- Contêineres Qt podem ser usados com algoritmos STL
- QString pode ser convertido de/para std::string e std::wstring com toStd(W)String / fromStd(W)String
Pessoalmente, gosto mais de QString do que de std::string, é mais fácil de usar e mais poderoso.
Sim você pode.
Na verdade, fiz um qt-gui-wrapper para um conjunto de funções baseadas em C. Não há problemas com a integração do QT, apenas o nível baixo C (que vaza a memória ...).
Veja aqui: http://code.google.com/p/qhocr/