0 👍
90 lượt xem
bởi
Xin chào mọi người, em mới học QT phần QWidget thì có thấy các bài hướng dần đều có khởi tạo kiểu như ở dưới.
 
Mọi người cho em hỏi việc truyền parent vào test() và parent truyền vào QWidget() có cần thiết không và tại sao ta lại thêm vào như thế vậy ạ.

2 câu trả lời

+1 👍
bởi
QWidget tổ chức scene dưới dạng tree, với root là window. Có hai vấn đề chính.

1. Layout: kích thước cũng như vị trí của child sẽ chịu ảnh hưởng của parent. Toạ độ (x, y) của mỗi QWidget là tương đối so với parent của nó. Tức là toạ độ tuyệt đối của child sẽ phụ thuộc vào parent, parent di chuyển thì cả cụm cũng đi theo luôn.

2. Memory management: thằng child thì life-cycle đi theo parent, nôm na là quản lý tự động dựa trên ownership. Thằng parent chết thì cả cụm cũng tự chết theo.

Cụ thể thì google từ khoá “scene graph”. Cách tổ chức này rất phổ biến. Ngoài ra cần đọc thêm tài liệu của Qt, nó viết phần parent-child này cũng rất chi tiết
bởi
1 câu trả lời chất lượng cao. Em cảm ơn anh nhiều ạ.
0 👍
bởi (🏅152)
Thật ra về mặt coding mà nói ( chưa nói đến mục đích cụ thể của class test ở đây là gì ) thì việc truyền parent  vào QWidget() là không bắt buộc.  Nếu xem file qwidget.h thì có thể thấy class QWidget chỉ có 1 constructor được khai báo như sau
explicit QWidget(QWidget* parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());

⇒ nếu không truyền tham số parent vào thì nó vẫn call đến constructor 1 tham số của của QWidget nhưng sẽ truyền tham số parent mặc định là nullptr vào.

Còn về mặt logic mà nói thì vì test kế thừa QWidget nên khi khởi tạo test thì cần pass tham số parent vào cho base class thì các logic mà class test kế thừa từ QWidget mới chạy đúng được,
bởi
hay quá anh, em hiểu rồi ạ. Em cảm ơn anh nhiều.
Coding Guru là nơi dành cho cộng đồng lập trình viên Việt Nam hỗ trợ nhau về tất cả các vấn đề liên quan đến công nghệ.

Chúng ta hãy cùng nhau xây dựng một cộng đồng công nghệ Việt Nam mạnh mẽ, thúc đẩy và giúp đỡ nhau cùng phát triển, thăng tiến trong sự nghiệp.

***
Nơi đam mê hội tụ
***

Một số câu hỏi gần đây có thể tương tự hoặc liên quan ↓

0 👍
1 trả lời 341 lượt xem
0 👍
2 trả lời 463 lượt xem
hỏi bởi Duy Ngô 10/3/2020
0 👍
2 trả lời 466 lượt xem
hỏi bởi ncq 15/8/2019
...