Các ứng dụng kết hợp trong Qt sử dụng D3.js làm ví dụ. Gỡ lỗi JavaScript trong ứng dụng kết hợp

Câu hỏi: Trình duyệt HTML có QT trong c++


Mọi người ơi, xin hãy giúp đỡ. Giáo viên đặt nhiệm vụ cho cả nhóm: “Viết trình duyệt của riêng bạn bằng C++, chỉ sử dụng thư viện qt và C++ tiêu chuẩn, không có giải pháp làm sẵn và WebKit” (p.s. Chúng tôi mới chuyển sang năm thứ 2). bất kỳ thông tin nào, cũng như bắt đầu từ đâu, cũng như ít nhất một số nguyên tắc hành động. Nói chung, làm thế nào để thực hiện điều này?? Cho đến nay, chỉ lấy mã nguồn từ trang web và thế là xong, thì thật là choáng váng. cho tôi một số ví dụ, tôi hy vọng ai đó sẽ chỉ nhìn thấy nó và vẽ các trang html, không có css, js, v.v.

Trả lời: rõ ràng là tiêu chuẩn thứ 4, vẽ trong cửa sổ chương trình

Câu hỏi: Quản lý trang HTML bằng javascript thông qua ứng dụng cục bộ


Xin chào người dùng diễn đàn thân mến. Tôi hy vọng tất cả các bạn đều có tâm trạng tốt và có một ngày tuyệt vời.

Tôi có một câu hỏi. Có lẽ ai đó có thể giúp đỡ với lời khuyên và chỉ cho tôi đi đúng hướng.

Đây là tình huống. Có mã javascript điều khiển trang trình duyệt tại một địa chỉ cụ thể. Nói một cách đơn giản, có một bản mô tả người dùng thực hiện những gì được yêu cầu và ở nơi nó được yêu cầu.

Nó diễn ra như thế này. Tôi mở trình duyệt và bản thân userscript bắt đầu hoạt động.

Câu hỏi:
Làm thế nào và thậm chí có thể đưa bản mô tả người dùng này vào chương trình và để nó tiếp tục thực hiện công việc của mình không? Và nó hoạt động như thể nó được thực thi trong chính trình duyệt.

Tùy chọn:
1) Chương trình mở trình duyệt của máy khách và chạy userscript. (Nếu đây là trình duyệt Opera thì chương trình phải tạo một thư mục trong file chương trình\opera và tạo một tệp có mô tả người dùng ở đó. Sau đó, hãy tự cấu hình opera (ghi đường dẫn đến tập lệnh). Sau khi người dùng đóng chương trình, tập lệnh sẽ bị xóa khỏi thư mục)
2) Nếu bạn sử dụng phiên bản Portable của cùng một vở opera, thì chương trình sẽ mở vở opera này và thực hiện các hành động tương tự như ở điểm 1). (Có thể làm sao để không hiển thị phiên bản di động mà chỉ hiển thị chương trình không?)
3) Chương trình mô phỏng một trình duyệt theo cách mà trang web cho rằng đó là trình duyệt đã mở, ví dụ như một vở opera. (Làm thế nào để mô phỏng một trình duyệt? Bạn nên chú ý đến điều gì?). Giải pháp khác từ bài viết này có phù hợp cho những mục đích này không?

Về cơ bản đó là tất cả những gì tôi nghĩ đến.
tôi sẽ lặp lại chìa khóađiểm mà chương trình nên có:
1) Thực thi mã từ userscripta
2) Mô phỏng trình duyệt
3) Toàn bộ ý tưởng về chương trình này nảy ra trong đầu nhằm ẩn mã javascipt. Nếu điều này có thể được thực hiện bằng cách nào đó bằng các phương tiện khác, xin vui lòng tư vấn.

Vui lòng đề xuất các lựa chọn của bạn. Sẽ không có lựa chọn xấu. Tôi sẽ xem xét mọi ý tưởng. Nếu có ai có kinh nghiệm về điều này thì thật tuyệt.

Tôi sẽ đưa ra tuyên bố từ chối trách nhiệm. Vì tôi không biết phương tiện nào là tốt nhất để thực hiện nhiệm vụ này và tôi đã quen thuộc với C# ở cấp độ công việc trong phòng thí nghiệm, nên lựa chọn hủy đăng ký chủ đề nào của tôi thuộc về C#. Nếu tác vụ này có thể được thực hiện bằng các ngôn ngữ lập trình khác, vui lòng cho tôi biết về nó.

Cảm ơn.

Trả lời:

tin nhắn từ IliyaTốt

Làm thế nào và thậm chí có thể đưa bản mô tả người dùng này vào chương trình và để nó tiếp tục thực hiện công việc của mình không? Và nó hoạt động như thể nó được thực thi trong chính trình duyệt.
Tôi không biết làm thế nào điều này có thể được thực hiện. Nhưng có những lựa chọn về cách nó sẽ trông như thế nào.

Theo tôi, mọi thứ đều đơn giản, bạn cung cấp cho khách hàng một trang html có tập lệnh cho yêu cầu và tập lệnh đó sẽ tự hoạt động
tại sao nó không phù hợp?

tin nhắn từ IliyaTốt

Toàn bộ ý tưởng về chương trình này nảy ra trong đầu nhằm ẩn mã javascipt. Nếu điều này có thể được thực hiện bằng cách nào đó bằng các phương tiện khác, xin vui lòng tư vấn.

Tất cả các tùy chọn này sẽ không ẩn tập lệnh; trong mọi trường hợp, nó phải được cung cấp cho khách hàng.
bạn có thể làm xáo trộn và thu nhỏ tập lệnh nếu bạn sợ mã nguồn, nhưng bạn luôn có thể khôi phục tập lệnh...

Câu hỏi: Mở một trang html


Làm cách nào để mở trang html thông qua một nút trong trình duyệt Google?

Trả lời: Nếu mã của trang html được chỉ định trong chương trình thì:

Nếu tệp html đã được lưu ở đâu đó thì:

Nếu không có file html mà bạn chỉ cần mở một số trang trên trình duyệt thì:

mã Delphi

Câu hỏi: Mã trang html khác nhau trong trình duyệt và theo chương trình


Lời chào hỏi! Khi xem code trang từ Chrome thì có dòng như thế này

Nhưng khi mình lấy trang theo chương trình thì không có dòng này đâu, mình chỉ lấy trang thôi

HTML5
1 2 3 4 <h1 > Không tìm thấy (#404)</h1> <lớp div = "cảnh báo cảnh báo-nguy hiểm" > Không tìm thấy trang.</div> <p>

Tôi đã thử gửi yêu cầu đăng bài có tiêu đề nhưng cũng không giúp được gì.

XML
1 2 3 4 .setRequestHeader "Loại nội dung", "application/x-www-form-urlencoded" .setRequestHeader "Kiểm soát bộ đệm", "Max-age=0" .setRequestHeader "Chấp nhận", "text/html,application/xhtml+xml ,application/xml;q=0.9,*/*;q=0.8" .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/ 537,36"

Bạn có suy nghĩ gì về việc phải làm không? Hay toàn bộ thủ thuật là ở d81a3234cefa30b1?

Trả lời: La Mã_rc, đây không phải là liên kết BAD, đây là liên kết đang hoạt động. Đã có một lần. Đây là câu hỏi.
Những thứ kia. liên kết đến sản phẩm đặc biệt(và không phải theo danh mục, như bạn đã chỉ ra trong ví dụ) khác nhau giữa các trình duyệt khác nhau (và theo thời gian). Và nó khác biệt chính xác ở tập hợp chữ cái/số này.
Tôi cần theo dõi theo chương trình một sản phẩm cụ thể mỗi ngày.
Điều này có nghĩa là bạn cần một liên kết sẽ mở trang sản phẩm từ bất kỳ trình duyệt nào hoặc bất kỳ lúc nào.

Đã thêm sau 5 giờ 11 phút
Nhưng liên kết dường như hoạt động ...
La Mã_rc, cảm ơn vì lời khuyên, tôi đã chú ý đến sản phẩm, thay thế bằng danh mục, hộp thư vẫn OK)

Câu hỏi: Làm cách nào để mở tệp html bằng trình duyệt được chỉ định cục bộ?


Xin chào.
Hãy cho tôi biết cách mở tệp html cục bộ bằng Google Chrome.
Tôi đã cố gắng mở nó.

TextBox1 phải chứa địa chỉ trình duyệt của bạn!

Câu hỏi: Tạo ứng dụng HTML/JS C#


Chúc một ngày tốt lành, những người thân yêu!

Cần phải viết một ứng dụng máy tính để bàn đa nền tảng. Với “khuôn mặt xinh đẹp”. Như bạn đã biết, WPF hoạt động kém trong Mono (hầu như không hoạt động), nhưng WinForms và thành phần WebBrowser hoạt động rất rất tốt.

Kết quả là, ý tưởng sau đây đã ra đời:
1. Với tư cách là khuôn mặt - chúng tôi sử dụng WinForm + WebBrowser
2. ?
3. Để triển khai logic ứng dụng, chúng tôi sử dụng “Pure C#”

Và điều còn thiếu ở đây, như bạn có thể nhận thấy, là thành phần trung gian, cái gọi là thành phần. "khoảng cách" giữa trình duyệt và mã C#. Trong phiên bản cổ điển, vai trò này được thực hiện bởi máy chủ/giao thức HTTP, nhưng vì... Chúng tôi có nhiệm vụ phát triển không phải là một trang web hay dịch vụ mà là thành phần máy khách-máy chủ, khỏi chuỗi này, chúng tôi cần loại bỏ cả HTTP-* và các ổ cắm nói chung, dưới bất kỳ hình thức nào, do tính kém hiệu quả của chúng.

Trên thực tế, câu hỏi là:
Làm cách nào để tách ruồi khỏi thịt cốt lết một cách chính xác và có giải pháp làm sẵn nào để thực hiện các kết nối đó không? Tôi không phải là chuyên gia về ASP.net, nhưng tôi chắc chắn rằng có cơ hội ở đó để thiết lập một số loại tuyến đường mặc định chung, tùy thuộc vào URL, sẽ chọn bộ điều khiển và phương thức mong muốn, chuyển các tham số tương ứng với nó, trước đó đã chuyển đổi chúng từ C# - một chế độ xem dễ hiểu (C# - biến/mảng/đối tượng). Tôi muốn thứ gì đó có cùng tinh thần, để không tự mình tạo ra tất cả các biến thể kết nối và định tuyến cục bộ này.

Cảm ơn bạn đã chú ý.

Đã thêm sau 6 phút
Tái bút Tất nhiên, chúng ta có thể viết một ứng dụng bảng điều khiển, giao diện của nó sẽ hoạt động trong trình duyệt và bản thân ứng dụng đó sẽ hoạt động như một máy chủ HTTP, nhưng tôi không thực sự thích ý tưởng này vì những lý do chính sau:

1. Mở ổ cắm ở chế độ nghe (máy chủ) - yêu cầu quyền bổ sung trong Windows
2. Đối với mỗi ứng dụng như vậy, bạn sẽ phải tìm kiếm ổ cắm của riêng mình, trước đây chưa bị ai chiếm giữ, với tất cả các hậu quả
3. Chia ứng dụng thành hai phần được kết nối lỏng lẻo, xử lý các yêu cầu HTTP theo cách thủ công, v.v. - tất cả những điều này không phải là ý tưởng hay nhất trong trường hợp này

Tôi thậm chí không nói về những hậu quả gián tiếp, chẳng hạn như nhu cầu tìm kiếm ổ cắm miễn phí mỗi khi bạn khởi động một ứng dụng như vậy, nhu cầu giải thích cho người dùng địa chỉ ứng dụng của anh ta hiện nằm ở đâu và tại sao lại như vậy, hoặc về những lỗi như " Rất tiếc, ứng dụng không thể khởi chạy được vì... Skype đang chặn cổng 80". hoặc “rất tiếc, phần mềm chống vi-rút của bạn cấm mở ổ cắm để nghe”, v.v.

C#
1 2 3 4 sử dụng (WebClient client = new WebClient() ) ( string htmlCode = client. DownloadString (ur) ; )

Nhưng nếu tôi cần có một cấu trúc được tuần tự hóa (một chuỗi các chuỗi), thì phương thức này sẽ đóng băng chương trình trong một thời gian rất dài. Điều khó chịu là trong trình duyệt, một trang có cùng yêu cầu sẽ mở ra ngay lập tức. Hãy cho tôi biết nên sử dụng lớp nào để nhanh chóng nhận được chuỗi

Trả lời: Nếu tệp quá lớn, hãy tải xuống ở luồng nền và do trình duyệt gây ra - tệp được lưu trong bộ nhớ đệm có thể được tải ở đó, nếu không, nó sẽ không thể tải nhanh hơn chức năng này.

Câu hỏi: Phân tích cú pháp html + javascript


Ngày tốt!

Tôi muốn viết một trình phân tích cú pháp để lấy thông tin cần thiết từ trang web để tiếp tục làm việc với nó. Tôi bắt đầu nghiên cứu và tìm thấy nhiều ví dụ giải thích rõ ràng phải làm gì và làm như thế nào, nhưng nó không phù hợp với lựa chọn của tôi. Vấn đề là thông tin tôi cần được hiển thị thông qua javascript và khi phân tích trang, mọi thứ đều được phân tích cú pháp ngoại trừ bảng có thông tin cần thiết (thay vào đó là dòng chữ "Đang tải..."). Làm thế nào để giải quyết vấn đề này, chia sẻ kiến ​​​​thức và kinh nghiệm của bạn?

Tái bút Trang web nhận được thông tin theo từng giai đoạn, theo tôi hiểu sau khi đọc một vài chủ đề.
Có một trình phân tích cú pháp trên trang này dành cho Excel và có một phương pháp như vậy để lấy (cái tôi cần) thông tin theo ba giai đoạn:

1. "Mở trang web site.ru trong IE",
2. "Cuộn trang xuống"
3. "Đóng IE."

Để thuận tiện, có một cửa sổ chứa mã nhận được từ trang web; nó chứa tất cả mã ở dạng html, thậm chí cả mã có được thông qua javascript.

Nếu có lệnh tương tự cho c#, php thì tôi rất biết ơn.

P.P.S. Ngôn ngữ lập trình về cơ bản không quan trọng nhưng tôi ưu tiên C# để trình phân tích cú pháp ở dạng chương trình *.exe với dữ liệu xuất ra Excel hoặc txt.

P.P.P.S Tôi xin lỗi vì sự cuồng tín như vậy trong phần mô tả chủ đề này. Điều quan trọng nhất là làm cách nào tôi có thể lấy được thông tin này, có các tùy chọn như trong trình phân tích cú pháp Excel không?

Trả lời: trang đến trong js gây ra yêu cầu tải dữ liệu không đồng bộ (cá nhân tôi đã nhìn thấy nó) và đẩy dữ liệu đã đến vào bảng. Đúng là con vormat xuất hiện đã khiến tôi sững sờ, nhưng tôi nghĩ rằng nếu bối rối, tôi có thể giải mã được nó.

P.s. Tốt hơn hết là bạn nên xem trước từ mạng trong bất kỳ trình duyệt nào.

QtWeb là một trình duyệt đa nền tảng nhẹ và nhanh với một số tính năng độc đáo.

QtWeb cho phép bạn xóa tất cả các bảng trình duyệt khỏi màn hình chỉ bằng một cú nhấp chuột, chỉ để lại trang web bạn đang xem. Ngoài ra, trình duyệt còn có bàn phím ảo tích hợp cho phép bạn chuyển đổi kiểu nhanh chóng và xem trang web trông như thế nào trên một hệ điều hành khác (Unix/Linux hoặc phiên bản Windows khác).

QtWeb hoàn toàn có thể tùy chỉnh - bạn có thể tùy chỉnh các phím nóng, công cụ tìm kiếm, tiêu đề menu, nút thanh công cụ, v.v. Bạn có thể di chuyển thanh điều hướng và thanh dấu trang đến bất cứ đâu hoặc thậm chí tháo chúng hoàn toàn và đặt chúng trên màn hình nền.

Đặc biệt chú ý đến bảo mật và quyền riêng tư trong QtWeb. Có một Chế độ được bảo vệ đặc biệt (Duyệt web riêng tư), cho phép bạn không để lại bất kỳ dấu vết lướt Internet nào, cả trên máy tính cục bộ (cookie, bộ đệm) và trên mạng (ví dụ: thậm chí có thể thay thế UserAgent).

Chức năng đặt lại hoàn toàn có sẵn sẽ đặt lại tất cả dữ liệu, xóa bộ nhớ đệm và khôi phục tất cả cài đặt về trạng thái ban đầu - như trước khi QtWeb ra mắt lần đầu trên PC này. Hỗ trợ SSL và HTTPS. Đồng thời, nó hiển thị thông tin đầy đủ về chứng chỉ của trang web. Phù hợp với bất kỳ trình duyệt hiện đại nào, QtWeb hỗ trợ các khung, JavaScript, Cookie, Dấu trang, lịch sử, mật khẩu và làm việc với nội dung đa phương tiện. Nó cũng hỗ trợ các biểu mẫu tự động điền - có thể được sử dụng để ghi nhớ và điền thông tin đăng nhập và mật khẩu cho các trang web bạn truy cập thường xuyên nhất.

Ngoài ra, nó hoạt động với các plugin Netscape, Adobe Flash Player, QuickTime và MediaPlayer. Có thể chạy từ dòng lệnh với sự hỗ trợ tham số. Không yêu cầu cài đặt và có thể được khởi chạy từ bất kỳ phương tiện di động nào. QtWeb dựa trên các thư viện Qt mở và công cụ WebKit được sử dụng trong trình duyệt Apple Safari và Google Chrome. Có giao diện đa ngôn ngữ.

  • Lập trình,
  • C++
  • Trực quan hóa dữ liệu
    • Hướng dẫn

    Tin vui cho các lập trình viên JavaScript là các giải pháp của họ có thể dễ dàng tích hợp vào các ứng dụng Máy tính để bàn, điều này có khả năng tăng đối tượng mục tiêu là người dùng của các thư viện đã phát triển (ít nhất điều này đúng với thế giới ứng dụng Qt).

    Ảnh chụp màn hình bên dưới hiển thị tiện ích Bánh xe phụ thuộc, được hiển thị bằng D3.js cũng như dữ liệu và màn hình được quản lý bằng Qt. Khi con trỏ ở trên cung tương ứng, các mối quan hệ của nó được “đánh dấu” và phần còn lại trở thành bán kỹ thuật số. Tiện ích này có thể được sử dụng để trực quan hóa các loại phụ thuộc khác nhau (ví dụ: thư viện).

    Không giống như giải pháp JS ban đầu, sơ đồ tự động thay đổi kích thước để phù hợp với kích thước của tiện ích và dữ liệu được đặt ở phía Qt chứ không phải bằng cách tải tệp JSON.

    Bài viết tập trung nhiều hơn vào các lập trình viên Qt, nhưng cũng có thể được các lập trình viên JS quan tâm.

    Ý tưởng ứng dụng lai

    Điểm khởi đầu cho ý tưởng về ứng dụng lai là một số hạn chế vốn có của ứng dụng gốc:
    • chi phí bổ sung cho việc triển khai và bảo trì các bộ phận khách hàng của hệ thống;
    • viết một giao diện người dùng độc đáo đôi khi là một công việc không hề đơn giản;
    • không có khả năng sử dụng lại API của các ứng dụng web hiện có.
    Ứng dụng kết hợp giải quyết những vấn đề này bằng cách:
    • việc triển khai được thực hiện như trong các ứng dụng web;
    • giao diện phức tạp được tạo bằng công nghệ web (HTML, CSS, SVG, Canvas);
    • API từ các ứng dụng web hiện có được sử dụng lại.
    Kiến trúc ứng dụng kết hợp giả định rằng
    • Ứng dụng Qt hoạt động như một trình duyệt;
    • tương tác của người dùng và logic ứng dụng được lập trình bằng JavaScript;
    • chức năng bổ sung được triển khai trong C++ trong phần Qt của ứng dụng.
    Do đó, các ứng dụng lai triển khai ý tưởng về một máy khách mỏng.
    Một ví dụ về ứng dụng kết hợp trong Qt là Trình phân tích hình ảnh WebKit.

    Ví dụ được thảo luận trong bài viết này sẽ chỉ sử dụng một phần của phương pháp ứng dụng kết hợp: hiển thị một thành phần bằng JavaScript. Trong trường hợp này, tất cả các tệp JS cần thiết sẽ được đặt trong các tài nguyên, như trong ứng dụng StandAlone cổ điển (độc lập và không yêu cầu kết nối với mạng nội bộ/mạng Internet để hoạt động).

    Cấu trúc dự án

    Cấu trúc chung của các tệp dự án được hiển thị trong hình:

    Thư mục cơ sở chứa:

    • d3viewer.h và d3viewer.cpp - định nghĩa và triển khai lớp trình xem cơ sở Trình xem D3, thừa hưởng từ QWidget QWebView.
    • d3webpage.h và d3webpage.cpp - định nghĩa và cách triển khai D3Trang Web- người thừa kế QWebTrang(để hỗ trợ xuất ra các thông báo lỗi và thông tin gỡ lỗi trong QWebPage::javaScriptConsoleMessage).
    Trong thư mục biểu đồ/bánh:
    • dependencywheelwidget.h và dependencywheelwidget.cpp - định nghĩa và triển khai lớp trình xem cơ sở, được kế thừa từ QWidget và đóng gói sự tương tác với QWebView.
    Thư mục tài nguyên được chia thành hai: js và html. Trong html có trang sẽ được tải trong tiện ích và trong đó chứa tất cả mã để tương tác với Qt, trong js có các tệp js cần thiết để DependencyWheel hoạt động: chung cho D3 - d3.min.js và cụ thể ví dụ - d3.dependencyWheel js.

    Sơ đồ lớp

    Để giảm độ dài của bài viết bằng VisualParadigm, một sơ đồ đơn giản đã được tạo: nó bỏ qua các thuộc tính và phương thức của các lớp không liên quan trực tiếp đến công nghệ được mô tả. Chi tiết triển khai có thể được tìm thấy trong mã nguồn, liên kết đến mã nguồn ở cuối bài viết.

    Khả năng tương tác Qt<->JS

    Trong các ứng dụng lai, một đối tượng đặc biệt được đưa vào JavaScript, các lệnh gọi phương thức được xử lý ở phía Qt:

    Void D3Viewer::addContextObject(const QString &name, QObject *object) ( frame()->addToJavaScriptWindowObject(name, object); //frame() - QWebFrame )
    Phương thức này được gọi trong các lớp dẫn xuất D3Viewer trong hàm tạo trước khi trang được tải:

    1. Bằng cách truy cập các thuộc tính của một đối tượng.
      Để làm điều này, bạn cần xác định một thuộc tính trong một đối tượng, đó là một đối tượng ngữ cảnh trong JS ("api"):

      Công khai: Q_PROPERTY(đệm đệm ĐỌC đệm VIẾT setPadding) các vị trí công khai: đệm phao(); // getter void setPadding(const float đệm); //người đặt
      Sau này, bạn có thể truy cập các thuộc tính này từ JS:

      Biểu đồ Var = d3.chart.dependencyWheel() .width(api.width) .height(api.height) .margin(api.margin) .padding(api.padding);

    2. Xử lý tín hiệu Qt trong JS, để làm điều này trong JS, bạn cần kết nối chức năng xử lý thích hợp với tín hiệu.

      Api.update.connect(vẽ lại);

    3. Gọi các vị trí Qt trong JS, ví dụ như khi xử lý một lần nhấp vào một phần tử:

      G.append("svg:path") .style("fill", fill) .style("Stroke", fill) .attr("d", arc) .on("mouseover", fade(0.1)) . on("mouseout", fade(1)) .on("click", function (d) ( api.itemClicked(packageNames) )); // trình xử lý được kết nối ở đây

    4. Khi gọi các phương thức Qt khác trong JS, với mục đích này, việc khai báo phương thức phải được đặt trước macro Q_INVOKABLE.

      Q_INVOKABLE làm mất hiệu lực thisMethodIsInvokableInJavaScript();

    5. Thực thi trực tiếp mã JS.

      Void D3Viewer::evaluateScript(const QString &script) ( frame()->evaluateJavaScript(script); )

    Trong ví dụ, phương pháp 4 và 5 không được sử dụng

    Gỡ lỗi JavaScript trong ứng dụng kết hợp

    Để gỡ lỗi ứng dụng JS (cũng như xem DOM, xem hoạt động mạng, tài nguyên đã tải, v.v.) trong hàm tạo D3Viewer, bạn cần đặt thuộc tính sau:

    #ifdef QT_DEBUG // trong trường hợp này, menu ngữ cảnh sẽ chỉ khả dụng trong trang xây dựng gỡ lỗi()->settings()->setAttribution(QWebSettings::DeveloperExtrasEnabled, true); #endif
    Sau đó, trong thời gian chạy, mục menu ngữ cảnh “Kiểm tra” sẽ có sẵn trong menu ngữ cảnh (nhấp chuột phải vào QWebView).

    Bằng cách chọn cửa sổ Web-Inspector nào được hiển thị.

    Trong cửa sổ này, trên tab Tập lệnh, bạn có thể bật tính năng gỡ lỗi.

    Việc đặt điểm dừng được thực hiện bằng cách nhấp vào số dòng tương ứng ở bên trái.
    Tái bút Trong Qt 4.8.6 tôi vẫn không thể nắm bắt được điểm ngắt. Trong 5.3.0 mọi thứ đều hoạt động tốt.

    sai sót

    Bất kỳ giải pháp nào cũng có cả ưu điểm và nhược điểm. Và trong trường hợp này, bạn sẽ phải trả giá cho “vẻ đẹp” của D3.js.
    • Chi phí bổ sung (chủ yếu là bộ nhớ).
      Ngoài việc QWebView “kéo” webkit theo nó, khi tạo một widget “lai” mới, chúng tôi tạo lại một đối tượng QWebView khá nặng. Điều này không liên quan lắm nếu toàn bộ giao diện người dùng được tải trong một QWebView (như được đề xuất trong ý tưởng ứng dụng kết hợp ban đầu).
    • Nguy cơ không thể sử dụng lại trên web sau khi sửa đổi JS. Để phù hợp với nhu cầu của Qt, bạn có thể sửa đổi mã JavaScript theo cách khiến nó không thể sử dụng được trong ứng dụng web. Do đó, nên tách biệt tất cả các cuộc gọi đến đối tượng api Qt ở một nơi - ví dụ: trong phần tập lệnh của tệp html, trong trường hợp này sẽ khác đối với các ứng dụng web và Qt cũng như mã JS trong các tập tin được bao gồm sẽ giống nhau.
    • Lỗi WebKit trong Qt 4.8.6
      D3 tích cực sử dụng các cấu trúc cây, mô tả về cấu trúc này có trong các tệp JSON. Về phía Qt, cùng một đối tượng JSON được tạo bằng cách sử dụng kết hợp QVariantMap/QVariantList dẫn đến QVariant. Mặc dù thực tế là cấu trúc của các đối tượng đó giống hệt nhau nhưng vẫn có những khác biệt trong Qt 4.8.6, vì đối tượng đó không được nhận biết trực tiếp và bạn phải tạo lại đối tượng JSON trong bộ nhớ ở phía JS. Trong Qt 5.3.0, bạn không cần phải sử dụng một chiếc nạng như vậy - mọi thứ đều hoạt động trực tiếp.

      Hàm tái tạoJsonObject(obj) ( var jsonObj = (); for(key in obj) ( jsonObj = obj; var dependency = ; for (var i = 0 ; i< obj.length ; i++) { dependencies.push(obj[i]); } jsonObj = dependencies; } return jsonObj; }

      Quay lại Qt 4.8.6, sau 15-20 giây thay đổi kích thước của tiện ích, ứng dụng sẽ ngừng hoạt động bình thường và một loạt thông báo lỗi trong JS xuất hiện. Trong Qt 5.3.0, mọi thứ đều hoạt động tốt, điều này một lần nữa cho thấy vấn đề nằm ở việc triển khai WebKit (mặc dù tôi có thể nhầm lẫn). Tuy nhiên, các vấn đề về cấp phát và giải phóng bộ nhớ ở phía JS vẫn có liên quan.

    Cập nhật - ngày 7 tháng 9 năm 2018 bởi

    Có rất nhiều trình duyệt web dành cho GNU/Linux ở đây, từ vài Kilobyte đến vài trăm Megabyte. Vậy ở đây có gì đặc biệt? trình duyệt qt cho các hệ thống tương tự UNIX.

    Chúng được xây dựng bằng Bộ web công cụ kết xuất và Qt bộ công cụ cho GUI.

    Tại sao lại là webkit? Đây là công cụ kết xuất nội dung web được sử dụng rộng rãi nhất, được triển khai rộng rãi nhất và dễ tích hợp. Ngay cả chớp mắt công cụ kết xuất dựa trên webkit. Nó cũng là nguồn mở!

    Tại sao lại là Qt? Bộ công cụ Qt là mã nguồn mở, linh hoạt và dễ tích hợp trong hầu hết mọi ứng dụng GUI. Phong cách tiện ích Qt cũng trông đẹp mắt và dễ chịu. Hoặc đơn giản có thể là lựa chọn cá nhân, một số người thích Qt hơn GTK+.

    Hãy bắt đầu, trọng tâm chính là nhẹ nhưng nó phải cung cấp các tính năng cơ bản của trình duyệt web.

    1. Falkon/Qupzilla, trình duyệt web Qt nhẹ

    Qupzilla ban đầu chỉ là một dự án nghiên cứu, ban đầu được mã hóa bằng Python PyQt, hiện có sẵn ở cả hai Qt 4Qt 5. Đây là một trình duyệt có đầy đủ tính năng với khả năng duyệt nhanh và nhiều cài đặt để sử dụng.

    Và bây giờ phiên bản 2.x được đổi tên thành Chim ưng, dựa trên QtWebEngine.

    Bạn có thể thay đổi giao diện của trình duyệt rái cá bằng .

    3. Arora, trình duyệt Qt nhẹ

    Đó là một nền tảng chéo khác trình duyệt qt dựa trên Qt4 với các tính năng nâng cao như trình chuyển đổi tác nhân người dùng, trình chặn quảng cáo tích hợp, xuất trang web dưới dạng PDF, trình phân tích nguồn trang, v.v. vân vân.

    Các gói nhị phân được biên dịch trước có sẵn trong hầu hết kho phần mềm của bản phân phối GNU/Linux.

    Hiện tại quá trình phát triển Arora có phần bị đình trệ, chỉ có trong Qt 4.

    Arora vẫn có thể sử dụng được, đặc biệt nếu bạn xây dựng nó từ nguồn.

    4. Trình duyệt Slimboat Qt

    CẬP NHẬT: Sự phát triển của Slimboat bị đình trệ, đừng sử dụng nó.

    Slimboat là một trình duyệt web phần mềm miễn phí đa nền tảng, không phải là một phần mềm nguồn mở, có sẵn dưới dạng các tệp nhị phân được biên dịch trước. Nó dựa trên Qt 4 và Webkit với mức sử dụng bộ nhớ nhỏ. Bây giờ nó đã lỗi thời, dự án đã cập nhật lên slimjet, dựa trên công cụ kết xuất chớp mắt.

    5. Trình duyệt WCGB

    Đây là trình duyệt qt được viết bằng python và PyQtWebkit, được viết bởi Alan D Mmoore để sử dụng làm trình duyệt kiosk.

    Nó có cấu hình cao và rất nhẹ về tài nguyên hệ thống. Nó thật tuyệt vời, hãy tải xuống và tìm hiểu thêm về nó

    Phần kết luận

    Bạn có thể sử dụng các trình duyệt dựa trên webkit nhẹ đó làm trình xem HTML đơn giản, tất cả chúng đều hỗ trợ mhtml kho lưu trữ web. Một ưu điểm khác biệt là chúng khởi động rất nhanh so với các trình duyệt khác như Firefox.

    Đây là một danh sách rất đầy đủ, có các trình duyệt dựa trên Qt và webkit khác, một số trong số chúng có thể thậm chí còn tốt hơn những trình duyệt được liệt kê ở trên.

    Các đề xuất luôn được chào đón, vui lòng cho chúng tôi biết suy nghĩ của bạn về trình duyệt Qt đó. Đừng quên chia sẻ điều này với bạn bè!

    Bình luận của bạn

      Erwin nói

    Hộp cát

    hiệp sĩ cầm súng Ngày 5 tháng 1 năm 2011 lúc 6:19 chiều

    Giới thiệu trình duyệt QtWeb

    • Phòng gỗ *

    Lời nói đầu
    Hiện tại có rất nhiều sự cạnh tranh đang diễn ra trên thị trường trình duyệt. Các nhà sản xuất đang giới thiệu ngày càng nhiều tính năng mới và bắt đầu sử dụng tính toán của card màn hình để hiển thị. Các trang web ngày càng nặng hơn: flash, số lượng hình ảnh khổng lồ, hình ảnh động nặng nề. Kết quả là, nếu bạn chưa cập nhật con ngựa sắt của mình, ngay cả việc lướt web bình thường cũng bị treo hoặc đóng băng. Nếu máy tính từ 10 tuổi trở lên thì sao? Tôi chỉ có một chiếc bàn ủi cũ không có chủ sở hữu. Nhưng không thể truy cập Internet bình thường ở đó. Những gã khổng lồ của thị trường trình duyệt đã chậm lại không thương tiếc và định kỳ gặp sự cố, chiếc bánh rán treo trên tab thứ ba. Có lẽ sự hao mòn của thời gian đã ảnh hưởng xấu đến phần cứng, gây ra những lỗi nghiêm trọng. Nhưng không thể tìm ra được vấn đề, nhưng tôi không muốn tìm thấy con voi ma mút nào cả. Và ở đây QtWeb xuất hiện.

    Một chút mô tả
    Có rất ít thông tin về anh ấy trên Internet, chỉ được đề cập trong wiki. Trang web chính thức cho biết đây là một trình duyệt nhẹ, an toàn, sử dụng webkit và có giao diện độc đáo. Họ đúng về sự dễ dàng. Trình duyệt hoạt động khá tốt trên bộ xử lý 14 năm tuổi (Pentium 2.400 Mhz) và rất ổn định. Ngay cả Firefox đáng tin cậy cũng bị lỗi định kỳ trên hai tài khoản. Nó chỉ bị treo trên mười tab, rốt cuộc không có đủ bộ nhớ. Ngoại hình độc đáo gần như không độc đáo như người ta nói. Xem cho chính mình:

    Mặc dù thanh dấu trang khá tiện dụng trên màn hình rộng. Giao diện được viết bằng thư viện QT.
    Một trong những tính năng thú vị là sự thay đổi nhanh chóng của chỉ số trình duyệt. Công cụ kết xuất không thay đổi, cùng một webkit. Mặc dù lỗi trên một số trang web biến mất.

    Thực đơn lựa chọn:

    Bên trong, bạn có thể tìm thấy một khối quảng cáo tích hợp, nhưng không có quy tắc, không thể tìm thấy nơi bạn có thể cung cấp chúng. Tất cả những gì còn lại là đào tạo thủ công. Có hỗ trợ proxy và của riêng chúng tôi. Không phải là một cái nạng thông qua IE như trong chrome (theo ý kiến ​​​​của tôi).

    Nhưng sự an toàn của khoản tiền gửi làm tôi ngạc nhiên:

    Để kích hoạt (hủy kích hoạt) chỉ cần làm mới trang. Bố cục không bị như vậy. Rất tiện lợi, giá như có một bộ lọc cho tất cả những thứ này...

    Ngoài ra còn có một máy khách torrent tích hợp. Chức năng này nhỏ nhưng thật tuyệt khi có trong tay. Thật không may, nó không tắt và chặn các tập tin. Không thân thiện với nam châm...

    Nhưng tôi thích một cái gì đó hoàn toàn khác hơn nhiều. Khả năng lưu một trang dưới dạng pdf. Tôi chưa thấy nó trên nhiều trình duyệt, ngoại trừ tổ hợp firefox+plugin. Nó rất thoải mái. Ví dụ: lưu một bài viết thú vị và lớn, sau đó đọc nó trên máy đọc sách điện tử hoặc điện thoại. Bố cục bị ảnh hưởng một chút và văn bản không phải là văn bản; một cái gì đó giống như ảnh chụp màn hình được chụp. Trọng lượng trang được lưu là khá chấp nhận được. Habra yêu thích trong pdf nặng 483 kb.

    Có vẻ như nó tải trang rất nhanh. Hỗ trợ HTML5 rất, rất tầm thường. Nhưng về phần kỹ thuật thì có những bài kiểm tra.

    Kiểm tra
    html5test.com - 155/300
    Axit3 - 100/100
    Sputnik từ Google: 164 lỗi

    Trang web chính thức có bảng so sánh với các trình duyệt khác.

    Khi Yandex mở, nó chiếm 13 MB RAM, với năm tab Yandex là 68. Để so sánh, Google Chrome với một tab là 14 và với năm tab là 79.

    Phần kết luận
    QtWeb là một trình duyệt rất tốt. Mặc dù có giao diện vụng về và kết quả kiểm tra thấp nhưng nó rất thuận tiện khi sử dụng do những điều nhỏ nhặt dễ chịu. Thêm vào đó nó hoạt động tốt trên phần cứng cũ.

    Nếu có ai quan tâm, đây là phần cứng mà nó hiện đang được sử dụng: Pentium 2 400 Mhz, 128 mb Dimm, Nvidia MX 440. Và tất nhiên là trình duyệt chính trên máy tính cá nhân mà các bài kiểm tra đã được thực hiện.

    Tái bút Thật không may, tôi không biết trình duyệt nên chạy thử nghiệm nào để kiểm tra. Nếu bạn có bất cứ đề nghị xin vui lòng viết. Tôi sẽ rất vui khi được kiểm tra nó.

    Tags: trình duyệt, thử nghiệm, webkit, qt