KDDockWidgets, một khung triển khai nâng cao cho QDockWidget

KDQDockWidget

Nhóm KDAB là công ty tư vấn phần mềm cho các ứng dụng Qt, C ++ và OpenGL cho các nền tảng khác nhau (máy tính để bàn, nhúng và thiết bị di động), ngoài ra cung cấp dịch vụ dạy kèm để phát triển các ứng dụng Qt từ đầu và chuyển tất cả các khung phổ biến sang Qt.

Trong những năm qua, KDAB đã đóng góp và tài trợ cho sự phát triển của QDockWidget. Nhưng vì các thay đổi và sửa lỗi mất nhiều ngày để thực hiện, bằng cách sử dụng QdockWidget, Hóa ra đó không phải là một lựa chọn tốt, do đó đã cho ra đời KDDockWidgets.

KDDockWidgets là khung docking nâng cao cho QDockWidgets, nhờ đó nó mở rộng việc sử dụng bằng cách thêm các chức năng mà QDockWidgets không hỗ trợ.

QdockWidget kết hợp nguyên bản mã GUI với logic với trạng thái, như rất khó để tiếp tục với các tính năng mới, điều này gây ra sự phức tạp lớn trong việc triển khai nó trong các nền tảng khác nhau. Vì nó là một thành phần cơ bản của một loạt các giao diện người dùng đồ họa, với nó, bạn có thể di chuyển toàn bộ phần tử cửa sổ (thanh công cụ, nhóm widget, v.v.) đến bất cứ nơi nào bạn muốn.

Tuy nhiên, KDAB cho rằng việc bảo trì mã QDockWidgets không dễ dàng, khi anh ấy nhận xét rằng:

KDDockWidgets được sinh ra từ nhu cầu duy trì sự tỉnh táo của tôi sau khi làm việc trên hai dự án yêu cầu tùy chỉnh sâu rộng. Một nơi mà chúng tôi đã cố gắng làm việc trực tiếp ngược dòng nhưng tỷ lệ hồi quy cuối cùng lại quá nhiều.

Và một cái khác, nơi tôi bắt đầu sử dụng các API riêng, sự kiện chuột giả và bộ lọc sự kiện, thoạt đầu có vẻ là một ý tưởng hay, nhưng cuối cùng lại trở thành một thế giới đau đớn. Ngoài ra, khách hàng của chúng tôi ngày càng sáng tạo hơn với các yêu cầu của họ, vì vậy rõ ràng là chúng tôi cần một khung gắn kết tốt hơn.

Vấn đề chính là thiết kế của nó, khá nguyên khối nhưng có thể định cấu hình (chúng ta có thể chọn các chức năng có sẵn cho người dùng, ngay cả khi ít người làm, đối với hình ảnh động), với mã spaghetti (vui vẻ trộn logic và trạng thái thành phần). Do đó, bất kỳ thay đổi nào cũng có thể tạo ra một số lượng lớn các hồi quy.

Đó là lý do tại sao KDAB đã quyết định tạo KDDockWidgets, nhờ đó nó tìm cách đơn giản hóa đáng kể thiết kế QDockWidgets, đồng thời tạo điều kiện thích ứng với các tình huống cụ thể.

KDDockWidgets cung cấp các chức năng sau:

  • Có thể gắn các widget vào một cửa sổ nổi và gắn nhóm đó vào cửa sổ chính
  • Gắn vào bất kỳ cửa sổ nào, không chỉ cửa sổ chính
  • Gắn vào giữa cửa sổ chính
  • Hỗ trợ các tab có thể tháo rời trong tiện ích trung tâm trong cửa sổ chính
  • Có thể tách các tab khỏi thanh tab trong khu vực gắn đế
  • Khả năng kết hợp một số tab bằng cách kết hợp các thành phần khác nhau.
  • Hiển thị các tiện ích trợ giúp nội bộ để người dùng có thể tùy chỉnh chúng hoặc cung cấp tiện ích của riêng họ.
  • Các nhóm thành phần có thể tự do chuyển từ cửa sổ bên ngoài (chỉ chứa nhóm thành phần này) sang cửa sổ chính (tính năng được triển khai một phần trong Qt 5.10).
  • Tùy chỉnh tiện ích tab
  • Tùy chỉnh thanh tiêu đề
  • Tùy chỉnh khung cửa sổ
  • Ngoài việc làm nổi bật rằng thay đổi chính là việc bổ sung các chỉ báo chính xác để loại bỏ các phần tử khỏi GUI, ngoài việc khái niệm về tiện ích trung tâm biến mất, do đó nó không còn là một yếu tố cụ thể nữa.

Tổ chức mới tách biệt rõ ràng logic khỏi giao diện đồ họa, để thời gian chạy cơ bản là có thể dễ dàng sử dụng lại cho các giao diện Qt Quick (dự kiến ​​cuối cùng). Nó cũng giúp bạn dễ dàng tùy chỉnh giao diện, người dùng có thể cung cấp các widget của riêng mình cho bất kỳ phần nào của giao diện.

Bên cạnh đó, KDDockWidgets được thiết kế để trở thành một khuôn khổ, vì vậy bạn có thể dễ dàng ghi đè các giao diện để cung cấp giao diện và hành vi tùy chỉnh. KDDockWidgets là một khung công tác mã nguồn mở, theo giấy phép GPLv2 và GPLv3.

Mã KDDockWidgets cũng như bản demo của nó có sẵn Trong liên kết sau đây.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.