• 4715阅读
  • 0回复

help,Qt view 不刷新的问题 [复制链接]

上一主题 下一主题
离线superleo
 
只看楼主 正序阅读 楼主  发表于: 2009-07-27
 我要实现以下功能。
在左侧的树状图上点击某个节点,根据当前点击的节点类型调用不通的功能。
当点击某一类型的节点时,如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();
}

快速回复
限100 字节
 
上一个 下一个