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++?

Foi útil?

Solução

Sim, você pode misturar QT e STL com muita facilidade.

A GUI leva QStrings, 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/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top