Tôi đang viết một plugin QML extension và tôi đang tìm cách truy cập kích thước của phần tử mà tôi vừa triển khai.Đọc kích thước phần tử QML được xác định bởi anchors.fill: parent
Ngay bây giờ các yếu tố mới (đặt tên CustomElement
) có thể được tạo ra với kích thước bất kỳ người dùng muốn bằng cách định nghĩa nó rộng và chiều cao giá trị, vì vậy trên QML nộp người dùng có thể làm:
CustomElement
{
id: my_elem
width: 800
height: 600
}
Nhưng tôi muốn để có thể lấy lại thông tin kích thước khi người dùng cấu hình kích thước thông qua một anchor
, như thế này:
Rectangle
{
width: 800
height: 600
CustomElement
{
id: my_elem
anchors.fill: parent
}
}
Tôi không biết cách truy cập thông tin anchors
.
Lớp plugin được định nghĩa là:
class CustomElement: public QDeclarativeItem
{
Q_OBJECT
//Q_PROPERTY() stuff
public:
// ...
};
Trong constructor của các plugin, tôi đặt QGraphicsItem::ItemHasNoContents
false:
CustomElement::CustomElement(QDeclarativeItem* parent)
: QDeclarativeItem(parent)
{
qDebug() << "CustomElement::CustomElement parent is:" << parent;
setFlag(QGraphicsItem::ItemHasNoContents, false);
}
Sau khi thêm debug, tôi nhận thấy rằng parent
là 0
, điều này giải thích tại sao tôi không thể truy xuất thông tin hữu ích với các phương thức khác là boundingRect()
. Rõ ràng, vấn đề là plugin của tôi không có cha mẹ. Làm cách nào để giải quyết vấn đề này?
Bạn chỉ cần đặt dấu chấm hết cho một tìm kiếm ba ngày !! Mà tôi có thể upvote mười lần – Martin
Hmm nó vẫn không làm việc cho tôi. Q_D và Q_Q là gì? Nếu tôi gọi Q_D trên tên lớp của tôi, tôi nhận được một lỗi comiler. Bạn có thể đăng một ví dụ hoàn chỉnh? – Martin
http://www.qtcentre.org/threads/20953-Q_D-and-Q_Q – karlphillip