2009-08-28 21 views
5

Ya he escrito un programa en C++ y me gustaría escribir una GUI para él. Me doy cuenta de que Qt es una herramienta maravillosa, sin embargo, Qt tiene sus propias clases, lo que me confunde bastante. por ejemplo: en lugar de String, Qt tiene una clase llamada QString ..Qt UI para el proyecto existente de C++

Me pregunto si puedo mezclar código C++ y código Qt en C++?

+0

JFYI está escrito como Qt, no QT. –

+0

gracias. Lo cambié atrás ~ – Lily

Respuesta

7

Sí, puede entremezclar Qt y STL muy fácilmente.

La GUI tiene QString s pero va a crear en silencio estos forma std::string o char*, QStrings de regresar de Qt se pueden convertir con toStdString() o toAscii().

Qt incluye un conjunto de clases de colección, pero no es necesario que las use.

Qt hace un buen trabajo para parecerse a la versión moderna de C++, hay algunos "extras" para manejar el mecanismo de eventos de señal y ranura, pero estos son más una complicación para el entorno de construcción que para el código.

editar: cuenta de agradecimiento

+2

Incluso podría usar QString :: toStdString()/QString :: toStdWString() :) – Bill

+0

QString no es implícitamente construible desde std :: string. No hay tal constructor. 'error: conversión de 'std :: string' a tipo no escalar 'QString' solicitado' Sin embargo, puede decir' QString x = myStdString.c_str(); ' – leemes

0

en resumen, sí se puede! por ejemplo, un QString es esencialmente una cadena y tiene un método toAscii(), por lo que puede usar Qt fácilmente para sus proyectos. Aunque PUEDE encontrarse con algunos problemas al integrar Qt en Visual Studio (suponiendo que lo esté usando), podrá mezclar el código de C++ y el código de Qt (que está en C++)

0

¡sí! Qt es algo que puede usar en su código C++. Qt es principalmente para GUI, pero son buenas clases para Socket, Containers, Network, ... Puede usar STL y otras clases normales o las que Qt le ofrece. El punto más importante es que si usa Qt en su código antes de la compilación principal, debe hacer una metacompilación para que esté lista para su compilador. Una cosa que deberías notar es que Qt no es estándar, aunque admite Windows, Linux y Mac OS, no se podrá utilizar en otras plataformas.

0

Se pueden usar juntos.

C++ tiene una larga historia y la implementación y el soporte de STL han evolucionado con el lenguaje. Creo que el ex equipo de Trolltech decidió que no tenían suficiente control sobre la calidad y la disponibilidad de las implementaciones de STL para hacer que la biblioteca de Qt dependa de ello. El resultado es que Qt tiene su propio QTL, encabezado QtAlgorithms y QString.

se han cuidado para que sean compatibles con el TEL:

  • mayoría de los contenedores tienen una interfaz similar a los STL (por ejemplo: el acceso iterador, push_back(), vacío(), etc.)
  • contenedores Qt se pueden convertir a/de contenedores STL (por ejemplo: QVector :: toStdVector, QList :: fromStdList)
  • contenedores Qt se pueden utilizar con algoritmos STL
  • QString se puede convertir a/de std :: string y std :: wstring con toStd (W) String/fromStd (W) String

Personalmente, me gusta más QString que std :: string, es más fácil de usar y más potente.

0

Sí, puedes.

De hecho, hice una envoltura Qt-GUI para un conjunto de funciones basadas en C. No hay problemas con la integración de Qt, solo el bajo nivel C (que pierde memoria ...).

Ver aquí: http://code.google.com/p/qhocr/

1

no voy a recomendar mezclar std código C++ y Qt código juntos.

Digamos que su código C++ es la lógica, entonces el código Qt debe ser solo para GUI. Usando un patrón MVC/MVP o similar, separe su lógica y su IU.

Por lo tanto, sería más fácil en el futuro poder ejecutar su código con/sin usar una IU.

Cuestiones relacionadas