В моей программе есть qtableview и Treeview.Код qtableview:
void MainWindow::tableShow(QString mystrings)
{
testModel = new QSqlTableModel(this);
testModel->setTable("parts");
if (mystrings=="")
{
testModel->setFilter("");
}
else
{
testModel->setFilter("type='"+mystrings+"'");
}
testModel->select();
ui->tableView->setModel(testModel);
}
, он прекрасно работает, и очень интересная возможность - автоматически редактировать ячейки и обновления базы данных.Теперь я создал TreeView с этим кодом:
void MainWindow::treeView2()
{
QStandardItemModel *myModel= new QStandardItemModel;
QStandardItem *item = new QStandardItem();
item = myModel->invisibleRootItem();
myQuery.exec("select groupName from maingroup");
while(myQuery.next()){
QString temp =(myQuery.value(0).toString());
QStandardItem *parItem= new QStandardItem(temp);
item->appendRow(parItem);
QSqlQuery childqry;
childqry.exec("select sub from subgroup where main = '"+temp+"'");
while(childqry.next()){
QStandardItem *childItem= new QStandardItem(childqry.value(0).toString());
parItem->appendRow(childItem);
}
}
ui->treeView->setModel(myModel);
ui->treeView->expandAll();
}
, но редактирование элемента в этом дереве не обновляет базу данных, и после перезапуска программы элемент остается прежним.Что я должен сделать, чтобы автоматически обновить базу данных с новым значением, отредактированным в дереве?заранее спасибо.