我要实现以下功能。 在左侧的树状图上点击某个节点,根据当前点击的节点类型调用不通的功能。 当点击某一类型的节点时,如ini-section类型的节点,将该节点的属性值以table的方式显示在右侧。 问题时当我先点击类型为ini-section的节点1时,显示正常。此时如果切换另外类型的的节点2,接着再点击节点1,就会将节点1 的内容多输出一遍 每操作这样一次,输出就会多一遍 这是为什么? void Test::setWindowContent(Node * currentNode) { switch(currentNode->getType()) { case NODE_TYPE_INI_SECTION: //第一次点击该类型节点时初始化 if (!iniSubWindow) { iniSubWindow = new QMdiSubWindow; tableView = new QTableView; tableModel = new IniTableModel; tableDelegate = new ComboBoxDelegate; tableModel->setHorizontalHeaders(QStringList()<<tr("Name")<<tr("Type")<<tr("Value")); tableModel->setList(currentNode->getAttribList()); tableView->setModel(tableModel); tableView->setItemDelegate(tableDelegate); tableView->setShowGrid(false); iniSubWindow->setWidget(tableView); iniSubWindow->setWindowTitle("Ini"); mdiArea->addSubWindow(iniSubWindow); } tableModel->setList(currentNode->getAttribList()); mdiArea->setActiveSubWindow(iniSubWindow); iniSubWindow->showMaximized(); return; case NODE_TYPE_XML: ................................................................. default: .................................................................. } 自定义的IniTableModel的setList()函数如下: void IniTableModel::setList(vector<AttribNode *> *list) { this->attribList = list; reset(); }
