¿Cómo crear aplicaciones nativas de C ++ con interfaz de usuario HTML / CSS?


83

¿Es posible desarrollar un programa C ++ utilizando HTML y CSS para la interfaz de usuario? Sé de programación con Javascript usando un contenedor Webkit, pero estoy realmente interesado en el desarrollo de C ++.

Me enamoré de C # WPF cuando desarrollé en Windows, pero ahora me mudé a Linux y no he encontrado una buena herramienta para usar marcado para interfaces. Para esto, me gustaría mezclar HTML y CSS, que son muy ligeros y fáciles de usar, con código C ++, con algo como WPF.

Oh, una cosa más: estoy buscando desarrollo de escritorio, no web.

Respuestas:


40

Sí, es posible. Lo que quieres es un marco web C ++. Puede comenzar por mirar CppCMS, un marco de desarrollo web gratuito de alto rendimiento (no un CMS) destinado al desarrollo rápido de aplicaciones web.

Editar : Después de que se haya aclarado la pregunta, creo que Awesomium sería una buena opción para sus necesidades.

Puede lograr la misma funcionalidad incorporando WebKit (o Gecko) pero, hasta donde yo sé, eso es exactamente lo que hace Awesomium detrás de escena.

Una alternativa es librocket, un paquete de middleware de interfaz C ++ diseñado para aplicaciones de juegos. Como puede adivinar por la descripción, es una buena opción para juegos o aplicaciones en tiempo real.


3
¿Pero esto se compilaría para un ejecutable? Busco escritorio, no web.
ranisalt

4
¿Quiere que el usuario pueda iniciar un navegador y navegar a localhost y usar la interfaz de su aplicación? ¿O desea que el usuario abra un ejecutable y se le presente la interfaz web?

15
@RobertDinu Creo que quiere construir una aplicación de escritorio con C ++ y crear la interfaz de usuario con HTML / CSS
Leonardo Arroyo

4
@RobertDinu: También hay una biblioteca más pequeña / liviana llamada libRocket ( librocket.com ) que podría ser útil para OP. Es posible que desee agregarlo a su respuesta si cree que es apropiado.
yzt

Puedo ver cómo esto ahorraría mucho tiempo. ¿Este enfoque generaría problemas en algún momento?
expiredninja

35

Sciter es exactamente eso: motor HTML / CSS integrable con API C / C ++. Compacto y multiplataforma.

Y mira este artículo .

Sciter tiene el mismo conjunto de características que WPF pero usa HTML / CSS en lugar de XAML y usa API nativa.

Funciones listas para usar:

  • HTML, CSS, SVG, aPNG (PNG animados), sprites de imágenes,
  • <plaintext> - editor con resaltado de sintaxis,
  • <htmlarea> - Editor HTML WYSIWYG,
  • <frame type=pager> - vista previa de impresión e impresión HTML / CSS,
  • animaciones,
  • Cliente HTTP, cliente REST / JSON, WebSocket's, DataSockets,
  • etc.

La misma aplicación con Sciter UI ejecutándose en Windows, MacOS y Linux de las mismas fuentes:

ingrese la descripción de la imagen aquí

Descargo de responsabilidad: soy autor de Sciter Engine.


2
Soy un principiante en c ++ pero encuentro la documentación escasa y aterradora para los principiantes ... la documentación debería comenzar con cómo ejecutar las demostraciones en bloques de código o incluso un shell para ver si funciona ... Por favor, agregue un poco más de esfuerzo de marketing en su proyecto
repzero

@repzero revisa este artículo codeproject.com/Articles/859098/… , creo que es adecuado para principiantes de C ++.
c-smile

2
@repzero A partir de los bloques de código, simplemente abra {sciter-sdk} /demos/usciter/usciter.cbp en ese IDE, seleccione el destino Release64 y haga clic en el botón "Construir y ejecutar"; debería ver la aplicación ejecutándose.
c-smile

@ c-smile gracias por un poco de orientación aquí. Cuando intenté ejecutar el proyecto en bloques de código, aparece un error fatal "gtk / gtk.h no existe ese archivo o directorio" este error emanaba de la declaración de inclusión en el "sciter-x -types.h "archivo de encabezado ... Estoy ejecutando debian jessie ... Tengo una carpeta llamada gtk que contiene el archivo gtk.h. esta carpeta se encuentra en '/user/include/gtk-2.o/gtk'..alguna sugerencia?
repzero

En Linux, Sciter requiere GTK3. Si desea crear muestras, necesitará el paquete de desarrollo gtk, pruebesudo apt-get install libgtk-3-dev
c-smile

11

Creo que Electron sería una buena adición a las otras respuestas.

Utiliza NodeJS para ejecutar una ventana de Webkit. Electron en sí es solo html / css / js, pero puede usar cualquier módulo de nodo dentro de su aplicación Electron, incluido el código C ++ compilado de forma nativa y personalizado. Un posible módulo para incrustar su código C ++ sería node-gyp.

Sin embargo, tenga en cuenta que este flujo de trabajo puede incluir un poco más de JS de lo que tendría con las otras respuestas.

Mi editor de texto favorito, Atom , fue creado con Electron.


9

Puede utilizar Chromium Embedded Framework para incrustar contenido HTML5 en su aplicación. Obtendrá el poder y la velocidad de Chromium y la capacidad de crear aplicaciones GUI de la misma manera que desarrolla aplicaciones web.


4

A partir de 2019, le sugiero que consulte el motor de interfaz de usuario HTML ultraligero
no de código abierto, disponible para C ++. Compatible con renderizado OpenGL y DirectX.

Ultralight es la opción más ligera y rápida para integrar la interfaz de usuario HTML en su aplicación C ++.

Está hecho por el creador de Awesomium, quien lamentablemente decidió eliminar Awesomium. Esto es lo que tenemos ahora.

Si necesita algo más pesado en lugar de liviano, le recomiendo que eche un vistazo a CEF . Es una herramienta muy poderosa (y de código abierto).


1
Ser de código cerrado es muy, muy desafortunado, considerando lo que Awesomium era capaz de hacer :(
ranisalt

Probé Ultralight pero fallé. Ni siquiera se pudo ejecutar la muestra del navegador debido a errores lib-not-found. La carpeta que lo contiene definitivamente está en mi variable PATH. Intenté compilar la aplicación básica pero no tuvo éxito. El compilador no pudo encontrar la configuración de clase que no está declarada en ninguna parte, ya que pude probar usando grep. (Ubuntu 18.4)
testalucida

@testalucida Puede buscar ayuda en el espacio de trabajo de Slack de Ultralight.
tomer zeitune
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.