Tôi đang viết một ứng dụng Qt.
Tôi đã tách ứng dụng của mình thành giao diện người dùng QML và chương trình phụ trợ C++ plugin.
Trong plugin C++ của tôi, tôi có một lớp trừu tượng Phiên mà tôi muốn hiển thị cho QML và tôi cũng có một vài triển khai của lớp đó.
Tôi muốn giao diện QML của mình chỉ biết về lớp Phiên và không bị làm phiền với các chi tiết cụ thể về loại phiên đó.
Tôi đã thử một vài biến thể của qmlRegister * để đăng ký loại Session với QML nhưng Session cần phải cụ thể (như trong trường hợp qmlRegisterType) hoặc nó đăng ký tốt nhưng tôi không thể tham khảo loại Session từ QML như trong property Session session
mà không cần khởi tạo một phiên từ QML.
Có ai biết cách tiếp cận điều này không?Đăng ký lớp trừu tượng C++ trong plugin QML và tham khảo nó từ QML
CẬP NHẬT:
Một ví dụ về những gì đã không làm việc:
Trong main.cpp:
char const* const uri = "com.nogzatalz.Downow";
qmlRegisterUncreatableType<downow::Session>(uri, 1, 0, "Session", "Abstract type");
Trong DowNow.qml:
import QtQuick 2.0
import com.nogzatalz.Downow 1.0
Item {
property Session session
}
Bạn nên thêm chính xác những gì bạn đã thử và những gì đã sai. Ngoài ra, bạn có ý nghĩa gì với "một vài triển khai của lớp đó" – labsin
Tôi đã cố gắng đăng ký lớp tóm tắt phiên bằng cách sử dụng qmlRegisterType/qmlRegisterInterface/qmlRegisterUncreatableType. Sau đó, tôi đã cố gắng giữ một đối tượng Session như một tài sản trong QML nhưng nó không hoạt động. Bởi "một vài triển khai của lớp đó" tôi có nghĩa là lớp tóm tắt phiên có một vài lớp cụ thể kế thừa từ nó. –
Bạn có tìm thấy giải pháp nào cho prolem không? Tôi đang xử lý vấn đề tương tự. – likeToCode