Khi thêm QAction * vào QMenu, người chịu trách nhiệm xóa đối tượng QAction *? Tôi không thể tìm thấy nó được đề cập trong tài liệu cho QMenu hoặc QAction.Quyền sở hữu của QAction
void MyClass::contextMenuEvent(QContextMenuEvent *evt)
{
QMenu menu(this);
QAction *a = new QAction(tr("Some action"), this);
menu.addAction(a); // who owns a?
menu.exec(evt->globalPos());
}
Qt Menus example không xóa bất kỳ hành động nào mà nó tạo để tôi giả sử QMenu sở hữu QAction. Đúng không?
Cảm ơn. Câu trả lời của bạn là mơ hồ về việc phá hủy "a". QObject sẽ làm điều đó cho tôi hay tôi phải làm điều đó một cách rõ ràng ở đâu đó trong MyClass? – glennr
Mỗi QObject duy trì một danh sách các QObject rằng nó là 'cha mẹ' của, khi QObject bị hủy, 'trẻ em' cũng bị xóa. Vì vậy, không, bạn không cần phải bất cứ điều gì ngoại trừ vượt qua QObject của bạn để cha mẹ arg của QObject đối tượng có nguồn gốc. Đọc các tài liệu trên QObject, nó sẽ giải thích nó tốt hơn nhiều so với nỗ lực đó ... – cmannett85