ใน Qt ฉันกำลังเปิดหน้าต่าง QDialog ทุกครั้งที่ฉันคลิกบางรายการฉันกำลังทำสิ่งใหม่ ฉันต้องการแน่ใจว่าฉันกำลังเปิด QDialog เพียงอินสแตนซ์เดียวสำหรับแต่ละรายการที่ฉันคลิก:
void foo::treeWidget_itemClicked(QTreeWidgetItem *item,nt column)
.....
QString groupID = item->data(0, Qt::UserRole).toString();
QString groupName = item->text(0);
GroupDialogContainer* pGroupDialogContainer = new GroupDialogContainer(groupID, groupName, this);
pGroupDialogContainer->show();
}
class GroupDialogContainer : public QDialog
{
Q_OBJECT
public:
GroupDialogContainer(QString GroupId,QString GroupName,QWidget *parent=0);
GroupDialogContainer(QWidget *parent=0);
virtual ~GroupDialogContainer();
Ui::GroupDialog ui;
public slots:
void closeEvent(QCloseEvent *event);
};
ฉันจำเป็นต้องเก็บแฮชหรือเวกเตอร์ของ GroupDialogContainer ไว้หรือไม่ คำถามที่สองของฉันคือ: แต่ละครั้งที่ฉันปิดหน้าต่าง QDialog โดยปิด () วัตถุ pGroupDialogContainer ที่รับผิดชอบในการเปิดมันคือ destroyer ed หรือไม่ หรือฉันต้องลบมันออกเมื่อฉันตรวจพบว่า QDIalog ปิดไปแล้ว?