我要实现以下功能。
在左侧的树状图上点击某个节点,根据当前点击的节点类型调用不通的功能。
当点击某一类型的节点时,如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();
}