Цитата(abc @ 31.3.2011, 19:52)

скомпилируй это - я так понял, что тебе такая штука нужна
QStandardItemModel * model = new QStandardItemModel();
model->setColumnCount(2);
QStandardItem *parentItem = model->invisibleRootItem();
for (int i = 0; i < 4; ++i) {
QStandardItem *item = new QStandardItem(0,2);
parentItem->appendRow(item);
parentItem = item;
model->setData(item->index(),QString("item %0").arg(i));
model->setData(item->index().sibling(0,1),QString("123"));
}
ui->treeView->setModel(model);
может мой вариант плохой, я сам его изобрёл только что

Спасибо! Вчера я всетки сочинил решение) и в этом варианте очень много близкого... если бы не сочинил сам, то он был бы очень полезен... Спасибо!!

) вот что насочинял... мот кому пригодится..
void MainWindow::setupInterface()
{
setupUi(this);
m_pModel = new QStandardItemModel(this);
m_pModel->invisibleRootItem()->insertColumns(0,2);
m_pModel->setHorizontalHeaderLabels(QStringList()<<"data"<<"id");
QSqlQuery *pQueryFirstLevel = prepareQuery(0);
int i = 0;
while(pQueryFirstLevel->next()){
QStandardItem *pFirstLevelItem = new QStandardItem;
addItem(m_pModel->invisibleRootItem(),pFirstLevelItem,pQueryFirstLevel,i);
int j = 0;
pFirstLevelItem->insertColumns(0,2);
QSqlQuery *pQuerySecLevel = prepareQuery(pQueryFirstLevel->value(0).toInt());
while(pQuerySecLevel->next()){
QStandardItem *pSecondLevelItem = new QStandardItem;
addItem(pFirstLevelItem,pSecondLevelItem,pQuerySecLevel,j);
int k = 0;
pSecondLevelItem->insertColumns(0,2);
QSqlQuery *pQueryThrdLevel = prepareQuery(pQuerySecLevel->value(0).toInt());
while(pQueryThrdLevel->next()){
QStandardItem *pThirdLevelItem = new QStandardItem;
addItem(pSecondLevelItem,pThirdLevelItem,pQueryThrdLevel,k);
int l = 0;
pThirdLevelItem->insertColumns(0,2);
QSqlQuery *pQueryFourLevel = prepareQuery(pQueryThrdLevel->value(0).toInt());
while(pQueryFourLevel->next()){
QStandardItem *pFourthLevelItem = new QStandardItem;
addItem(pThirdLevelItem,pFourthLevelItem,pQueryFourLevel,l);
l++;
}
k++;
delete pQueryFourLevel;
}
j++;
delete pQueryThrdLevel;
}
i++;
delete pQuerySecLevel;
}
delete pQueryFirstLevel;
mf_treeView->setModel(m_pModel);
}
void MainWindow::addItem(QStandardItem *pOwnerItem, QStandardItem *pNewItem, QSqlQuery *pQuery, int i)
{
pOwnerItem->appendRow(pNewItem);
m_pModel->setData(m_pModel->index(i,0,pOwnerItem->index()),pQuery->value(1).toString());
m_pModel->setData(m_pModel->index(i,1,pOwnerItem->index()),pQuery->value(0).toString());
}
QSqlQuery *MainWindow::prepareQuery(int nID)
{
QSqlQuery *pQuery = new QSqlQuery(QSqlDatabase::database("test"));
pQuery->prepare("SELECT id, data FROM t_groups WHERE id_owner = :id;");
pQuery->bindValue(":id", nID);
pQuery->exec();
return pQuery;
}
Но теперь встал другой вопрос)) Как получить значение этого id... ?
Вот суть вопроса... я хочу сделать колонку id скрытой... и когда я нажимаю на какую-нить группу, узнать значение в ее второй колонке... ну тоесть ее id... и снова сочинял до не возможности... Раз уже открыл тему так может и этот вопрос рассмотрим тогда...?
void MainWindow::slotDebug(QModelIndex index)
{
QString str = m_pModel->data(index).toString();
lineEdit->setText("Group name - \"" + str + "\" id - \"");
}
Так получаю значения текущего выбранного элемента... в "index" когда деюбажиш видно что [0,0] - это выбраное значение (например "Группа 1"), а в [0,1] - значение id (получается 1).... Как мне это 1 достать??? Пробовал вроде так (может с ошибкой пишу как помню):
QStandardItem *item = m_pModel->itemFromIndex(index);
QModelIndex idx = m_pModel->index(item->row(),1,item->index());
qDebug()<<item->row()<<idx.data().toString();
Получается снова не то все... в асистанте пересмотрел все методы класса QModelIndex, QStandardItemModel и QStandardItem.... мот что и пропустил... но много чего и перепробовал... думаю этот вариант близок к теме... но вот эта запись смущает item->row() при получении индекса....
Эскизы прикрепленных изображений
 РЈРСВВВВВВВеньшено Р В Р’В Р СћРІР‚ВВВВВВР С• 31%
382 x 277 (11.15 килобайт)
|