использовать MVC
Хотите сказать что нужно создать модель и потом сделать setModel для QTreeView?
Если это так ... то я пытался ... но толком нечего не получилось.
//---------
Ладно спросим по другому 

Есть 2 таблицы (структура примерно показана на рисунке) 

Я построил QTreeWidget при помощи запроса (как показано ниже).
    QMap<int, QTreeWidgetItem*> categoryMap;
    QString sFilterInterval;
    categoryTree = new QTreeWidget();
    categoryTree->setColumnCount(3);
    categoryTree->setColumnHidden(1,true);
    categoryTree->setColumnHidden(2,true);
    QTreeWidgetItem *parentItem = categoryTree->invisibleRootItem();
    sFilterInterval = QString("SELECT DISTINCT category_parent_id FROM category_xref");
    QSqlQuery queryParents(sFilterInterval);
    while (queryParents.next()){
        if (queryParents.value(0).toInt()>0){
            parentItem = categoryMap.value(queryParents.value(0).toInt());
        }else{
            parentItem = categoryTree->invisibleRootItem();
        }
        sFilterInterval = QString("SELECT category_parent_id, category_id, category_name, list_order FROM "
                                  "category, category_xref WHERE "
                                  "category_id = category_child_id AND "
                                  "category_parent_id = %1 ORDER BY list_order").arg(queryParents.value(0).toInt());
        QSqlQuery query(sFilterInterval);
        while (query.next()){
            QTreeWidgetItem *category = new QTreeWidgetItem(parentItem);
            category->setText(0, query.value(2).toString());
            category->setText(1, query.value(1).toString());
            categoryMap.insert(query.value(1).toInt(), category);
        }
    }
Подскажите друзья как мне построить модель ...