上节提到过,main窗口调用各widget封装好的dll时,将parent传递给了个widget
在treeView 封装dll时 写入的showTree方法接受到parent
bool showTree(void *parent, void *tree, void *)
{
QWidget *par = (QWidget *)parent;
valTrans *vt = (valTrans *)tree;
//接收到父窗口传过来的parent
TreeView *treeview = new TreeView(par);
QWidget *treewidget = (QWidget *) treeview;
vt->ptr = treewidget;
return true;
}
在创建TreeView Class 时 一定要继承对应的类,这样才能调用到父parent
class TreeView : public QWidget
这样写,在关闭主窗口时,会调用TreeView 的析构函数
TreeView::~TreeView()
好处有很多
一方面会减少内存泄漏的发生
另一方面
在关闭TreeView 时,需要将修改后的TreeView 的内容保存到XML文档中
这时候,直接在TreeView的析构函数中保存XML文档即可,下次进入便能直接读取
TreeView::~TreeView()
{
QString fileName = "treeindex.xml";
writeXml(fileName, treeView);
}

本文介绍了在使用DLL封装方式时,如何通过传递parent参数来实现TreeView组件的正确显示及销毁。具体包括TreeView类的继承设置、析构函数中保存XML文档的方法等,确保了资源的有效管理和数据的一致性。
512

被折叠的 条评论
为什么被折叠?



