Tôi đang viết mã thử nghiệm sẽ tự động lặp lại qua tất cả các tiện ích của Q_PROPERTY và một số thuộc tính đang sử dụng các loại được đăng ký qua qRegisterMetaType. Nếu tôi muốn đọc/ghi chúng vào QVariant tôi cần phải sử dụng QVariant :: UserType khi lưu trữ chúng vào biến thể. Càng xa càng tốt.Làm thế nào để xác minh QVariant loại QVariant :: UserType là loại dự kiến?
Nhưng khi tôi muốn kiểm tra đọc và viết của các thuộc tính này, tôi cũng cần phải biết loại của chúng. Đối với các công cụ đã được các loại qt tiêu chuẩn, tôi có thể thực hiện điều này thông qua QVariant :: type() nhưng vì tôi có rất nhiều usertypes, điều này sẽ được thực hiện như thế nào?
Từ api của QVariant, tôi phát hiện này:
bool QVariant::canConvert (Type t) const
Nhưng tôi hơi nghi ngờ nếu điều này sẽ dẫn đến không đúng chủng loại trong trường hợp enums?
Vì vậy, cách nào là cách dễ dàng để xác minh loại loại người dùng nào được lưu trữ trong QVariant?
Tuy nhiên , có vẻ như trong trường hợp của QVarian t :: Phương thức UserType, typeName() trả về "UserType" và typeName() trả về giá trị QVariant :: UserType enum. Vì vậy, cả hai đều vô dụng – rasjani
Đối tượng thời gian là tốt, tôi có thể làm kiểm tra cũng với typecasting để ví dụ của bạn cũng propably hoạt động tốt. Nhưng câu hỏi của tôi là về enum's mà không phải là một loại lớp và người ta có thể propably typecast bất kỳ biến số thành một enum. Nhưng như đã nói. Tôi sẽ kiểm tra mã của bạn. – rasjani
Ah, xin lỗi, tôi không để ý đến phần đó. Tôi đã thử và có vẻ như nó có thể đăng ký một loại enum với Q_DECLARE_METATYPE hoặc qRegisterMetaType và sử dụng nó theo cùng một cách. Các tài liệu chỉ nói về class hoặc struct với constructor mặc định công cộng, copy constructor và destructor, vì vậy tôi không hoàn toàn chắc chắn, nhưng tôi nghĩ nó sẽ làm việc cho bất kỳ kiểu nào có giao diện ngầm để tạo, sao chép và hủy diệt. – Leiaz