QTreeview儿童指标重新绘制

时间:2012-09-08 14:05:57

标签: c++ qt signals-slots qtreeview

美好的一天,我有QTreeView和一些后台线程,而不是GUI线程添加模型项,问题是当显示我的视图子项 - 指示符不重绘但它们存在(如果你按到它们放置节点扩展的地方) ),我发出信号dataChange,但我的孩子 - 指标没有重新绘制。

我做错了什么? 这是后台线程中的代码,我称之为:

void notify()
    {
        if (file_item_type::parent())
        {
            file_item_type::parent()->notify(this);
        }
        file_item_type::filesystem_type::s_notify.dataChange(this);
    }

然后在模型中

void FileItemModel::dataChangeItem(void *it)
{
    file_item_type *item = static_cast<file_item_type*>(it);
    if(item&&isWatchedDir(item))
    {
        int row = indexOfChild(item);
        if (row>=0)
        {
            QModelIndex indexT = createIndex(row, eDC_Name, item);
            QModelIndex indexL = createIndex(row, eDC_Size, item);
            emit dataChanged(indexT,indexL);
        }
    }
}

然后我在代理模型中捕获dataChanged信号

void FileProxyTreeModel::sourceDataChanged( const QModelIndex& from, 
                                            const QModelIndex& to )
{
    emit dataChanged( mapFromSource( from ), mapFromSource( to ) );
}

0 个答案:

没有答案