Làm cách nào để tạo ứng dụng C ++ gốc với giao diện người dùng HTML / CSS?


83

Có thể phát triển một chương trình C ++ trong khi sử dụng HTML và CSS cho giao diện người dùng không? Tôi biết về lập trình với Javascript bằng cách sử dụng bộ chứa Webkit, nhưng tôi thực sự quan tâm đến việc phát triển C ++.

Tôi cảm thấy yêu thích C # WPF khi phát triển trên Windows, nhưng bây giờ tôi chuyển sang Linux và tôi chưa tìm thấy công cụ tốt để sử dụng đánh dấu cho giao diện. Đối với điều này, tôi muốn kết hợp HTML và CSS, rất nhẹ và dễ sử dụng, với mã C ++, với một cái gì đó như WPF.

Ồ, một điều nữa: Tôi đang tìm kiếm sự phát triển dành cho máy tính để bàn, không phải web.

Câu trả lời:


40

Có, nó là có thể. Những gì bạn muốn là một khuôn khổ web C ++. Bạn có thể bắt đầu bằng cách xem CppCMS —Một Khung Phát triển Web Hiệu suất Cao Miễn phí (không phải CMS) nhằm mục đích Phát triển Ứng dụng Web Nhanh.

Chỉnh sửa : Sau khi câu hỏi đã được làm rõ, tôi nghĩ Awesomium sẽ phù hợp với nhu cầu của bạn.

Bạn có thể đạt được chức năng tương tự bằng cách nhúng WebKit (hoặc Gecko) nhưng theo tôi biết thì đó chính xác là những gì Awesomium thực hiện đằng sau hậu trường.

Một giải pháp thay thế là librocket —một gói phần mềm trung gian giao diện C ++ được thiết kế cho các ứng dụng trò chơi. Như bạn có thể đoán từ mô tả, nó phù hợp với trò chơi hoặc ứng dụng thời gian thực.


3
Nhưng điều này sẽ biên dịch cho một tệp thực thi? Tôi đang tìm kiếm máy tính để bàn, không phải web.
ranisalt 07/07

4
Bạn có muốn người dùng có thể kích hoạt trình duyệt và điều hướng đến localhost và sử dụng giao diện ứng dụng của bạn không? Hay bạn muốn người dùng mở tệp thực thi và được hiển thị với giao diện web?

15
@RobertDinu Tôi nghĩ anh ấy muốn xây dựng một ứng dụng dành cho máy tính để bàn bằng C ++ và tạo giao diện người dùng bằng HTML / CSS
Leonardo Arroyo

4
@RobertDinu: Ngoài ra còn có một thư viện nhỏ hơn / nhẹ hơn gọi là libRocket ( librocket.com ) có thể hữu ích cho OP. Bạn có thể muốn thêm nó vào câu trả lời của mình nếu bạn nghĩ nó phù hợp.
yzt 07/07/2013

Tôi có thể thấy cách này sẽ tiết kiệm rất nhiều thời gian. Cách tiếp cận này có dẫn đến các vấn đề ở bất kỳ điểm nào không?
hết hạn vào

35

Sciter chính xác là vậy - công cụ HTML / CSS có thể nhúng với API C / C ++. Nhỏ gọn và đa nền tảng.

Và kiểm tra bài viết này .

Sciter có bộ tính năng tương tự như WPF nhưng sử dụng HTML / CSS thay vì XAML và sử dụng API gốc.

Các tính năng ra khỏi hộp:

  • HTML, CSS, SVG, aPNG (PNG động), hình ảnh,
  • <plaintext> - trình chỉnh sửa với đánh dấu cú pháp,
  • <htmlarea> - Trình chỉnh sửa HTML WYSIWYG,
  • <frame type=pager> - xem trước bản in và in HTML / CSS,
  • hình ảnh động,
  • Máy khách HTTP, máy khách REST / JSON, WebSocket's, DataSockets,
  • Vân vân.

Ứng dụng tương tự với Sciter UI chạy trên Windows, MacOS và Linux từ các nguồn giống nhau:

nhập mô tả hình ảnh ở đây

Tuyên bố từ chối trách nhiệm: Tôi là tác giả của Sciter Engine.


2
Tôi là người mới bắt đầu về c ++ nhưng tôi thấy tài liệu ít ỏi và đáng sợ cho người mới bắt đầu..tài liệu này nên bắt đầu với cách chạy các bản trình diễn trong codeblocks hoặc thậm chí là một trình bao để xem nó có hoạt động không ... Vui lòng thêm một số nỗ lực tiếp thị của bạn dự án
repzero

@repzero kiểm tra bài viết này codeproject.com/Articles/859098/… , tôi nghĩ nó phù hợp cho người mới bắt đầu C ++.
c-smile

2
@repzero Đối với codeblocks, chỉ cần mở {sciter-sdk} /demos/usciter/usciter.cbp trong IDE đó, chọn mục tiêu Release64 và nhấp vào nút "Build and Run" - bạn sẽ thấy ứng dụng đang chạy.
c-smile

@ c-smile, cảm ơn vì một số hướng dẫn ở đây. khi tôi cố gắng chạy dự án trong codeblocks, tôi gặp lỗi nghiêm trọng "gtk / gtk.h không có tệp hoặc thư mục nào như vậy", lỗi này xuất phát từ câu lệnh include trong "sciter-x -types.h "tệp tiêu đề ... Tôi đang chạy debian jessie..Tôi có một thư mục tên là gtk chứa tệp gtk.h. thư mục này nằm trong '/user/include/gtk-2.o/gtk'..có lời khuyên nào không?
repzero

Trên Linux Sciter yêu cầu GTK3. Nếu bạn muốn xây dựng mẫu sau đó bạn sẽ cần gói phát triển gtk, hãy thửsudo apt-get install libgtk-3-dev
c-mỉm cười

11

Tôi nghĩ Electron sẽ là một bổ sung tuyệt vời cho các câu trả lời khác.

Nó sử dụng NodeJS để chạy một Cửa sổ Webkit. Bản thân Electron chỉ là html / css / js, nhưng bạn có thể sử dụng bất kỳ Mô-đun Node nào trong Ứng dụng Electron của mình - bao gồm mã C ++ tùy chỉnh, được biên dịch nguyên bản. Một Mô-đun khả thi để nhúng mã C ++ của bạn sẽ là node-gyp.

Tuy nhiên, hãy lưu ý rằng quy trình làm việc này có thể bao gồm nhiều JS hơn một chút so với những câu trả lời khác mà bạn có.

Trình soạn thảo văn bản yêu thích của tôi, Atom , được tạo bằng Electron.


9

Bạn có thể sử dụng Khung nhúng Chromium để nhúng nội dung HTML5 vào ứng dụng của mình. Bạn sẽ nhận được sức mạnh và tốc độ của Chromium cũng như khả năng xây dựng ứng dụng GUI giống như cách bạn phát triển ứng dụng web.


4

Kể từ năm 2019, tôi khuyên bạn nên xem Công cụ giao diện người dùng HTML Ultralight
không phải là mã nguồn mở, có sẵn cho C ++. Hỗ trợ hiển thị OpenGL và DirectX.

Ultralight là tùy chọn nhẹ hơn, nhanh hơn để tích hợp giao diện người dùng HTML trong ứng dụng C ++ của bạn.

Nó được tạo ra bởi người tạo ra Awesomium, người không may đã quyết định xóa Awesomium. Đây là những gì chúng tôi có bây giờ.

Nếu bạn cần thứ gì đó nặng hơn là nhẹ, tôi khuyên bạn nên xem qua CEF . Đó là một công cụ rất mạnh (và mã nguồn mở).


1
Nó là nguồn đóng rất, rất đáng tiếc, khi xem xét những gì Awesomium có khả năng :(
ranisalt

Tôi đã thử Ultralight nhưng không thành công. Thậm chí không thể chạy mẫu Trình duyệt do lỗi không tìm thấy lib. Thư mục chứa chắc chắn nằm trong biến PATH của tôi. Đã cố gắng biên dịch Ứng dụng cơ bản nhưng không thành công. Trình biên dịch không thể tìm thấy Cài đặt lớp không được khai báo như tôi có thể chứng minh bằng cách sử dụng grep. (Ubuntu 18.4)
testalucida

@testalucida Bạn có thể yêu cầu hỗ trợ tại không gian làm việc Slack của Ultralight.
tomer zeitune
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.