2012-02-11 28 views
8

Tôi có thư viện chứng minh cho tôi một QGLWidget và giao diện cho phép tôi chỉ thay đổi kích thước/đặt kích thước và kiểm soát hoạt ảnh GL; nhưng không có lệnh GL được tiếp xúc bên ngoài, tất cả tôi làm điều đó khởi tạo GLWidget, và sau đó vượt qua bối cảnh để thư viện và sau đó gọi bộ đệm trao đổi để hiển thị hình ảnh động ..Lưu trữ tiện ích QOpenGL bên trong QML

Tôi muốn tích hợp thư viện QGLWidget này vào QML, có thể hove QGLWidget bên trong QML? nếu có thì sao?

Trả lời

3

Nó hoàn toàn có thể! Bạn có thể write a QML plugin sẽ define a new QML element để đóng gói thư viện.

Sau đó, bạn sẽ import plugin này từ tài liệu QML và bạn sẽ sử dụng thành phần mới này và khai thác các tính năng mà thư viện cung cấp.

Mẹo: nếu ứng dụng tải tài liệu QML của bạn được thiết lập để có trên QGLWidget, thì bạn sẽ không cần phải tạo một QGLWidget mới bên trong plugin của mình. I did this mistake once.

This blog post cho biết cách tạo phần tử QML đơn giản/mới từ đầu và cách sử dụng nó trong tài liệu QML.

+0

Xin chào Karl, cảm ơn bạn đã đầu tư, hãy để tôi thử ngay hôm nay ... :) –

+3

Bất kỳ ai bị bỏ phiếu, hãy giải thích lý do. – karlphillip

+0

2 liên kết đầu tiên không hoạt động nữa – wotanii

2

QGLWidget có nguồn gốc từ QWidget trong khi các tiện ích QML được triển khai dưới dạng QDeclarativeItem có nguồn gốc từ QGraphicsObject và hai thứ này là các thế giới khác nhau. Có thể làm cách nào để thực hiện các bản vẽ OpenGL trong một mục QML là khai báo một QDeclarativeItem mới, đưa nó vào hệ thống QML và sau đó ghi đè phương thức vẽ của lớp con QDeclarativeItem này để vẽ bản địa (bằng cách gọi hàm beginNativePainting và endNativePainting của Ví dụ QPainter được cung cấp trong phương thức vẽ).

Hãy nhìn vào hai liên kết sau đây: http://doc.qt.nokia.com/4.7-snapshot/qml-extending.html http://developer.qt.nokia.com/forums/viewthread/4109