crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Некорректное сохранение "tableView"
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
potkin Дата 1.9.2010, 12:13
  Всем спасибо за ответы :)
Продолжаю.
Есть Реляционная модель:
 QSqlRelationalTableModel *model;
model = new QSqlRelationalTableModel(this, db);
model->setTable("answer");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setRelation(6, QSqlRelation("correctness", "correctnessID", "nameEN"));
if (model->select())
  {
      .................
      model->setHeaderData(5, Qt::Horizontal, tr("answerUA"));
      model->setHeaderData(6, Qt::Horizontal, tr("correctnessID"));  // Реляция
  }

Надо считать несколько записей и проверить их на валидность.
Считываю так:
for(int i=0; i<model->rowCount(); i++)
{
  QSqlRecord record = model->record(i);
//1.Считывает и проверяет Нормально
  if(record.value("answerUA").toString() == "ТЕКСТ")
   {
      .................
   }

//2.НЕ Считывает.
  if(record.value("correctnessID").toString() == "ТЕКСТ")
   {
      .................
   }
}


Тоесть "//2. ... " не работает.
"correctnessID", всегда пустое :( - НЕ СЧИТЫВАЕТ потому что оэто реляция 2-х таблиц.
А вот "answerUA" - нормально считывает.
Litkevich Yuriy Дата 27.8.2010, 19:59
 
Цитата(potkin @ 27.8.2010, 23:35) *
Мало примеров в сети, в основном так, только общая информация
примеры смотри в делегатах, они непосредственно с моделью взаимодействуют.
potkin Дата 27.8.2010, 19:35
 
    for(int i=0; i<model->rowCount(); i++)
    {
        QModelIndex index = model->index(i,1);
        modelAZ->setData(index, "Текст ...");
    }


П.С. Мало примеров в сети, в основном так, только общая информация :(
Litkevich Yuriy Дата 27.8.2010, 19:19
  после селекта, ролбэк не нужен - лишнее.
программное изменение осуществляется через метод setData интерисующей тебя модели.
potkin Дата 27.8.2010, 15:20
  Продолжаю ...
Подскажите, как программно отредактировать, данные в ячейках.
Данные заполняют tableView так:
    model = new QSqlRelationalTableModel();
    model->setTable("answer");
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    if (model->select())
    {
       model->setHeaderData(0, Qt::Horizontal, tr("AnswerRU"));
       model->setHeaderData(1, Qt::Horizontal, tr("CorrectnessRU"));

       ui->tableView->setModel(model);
       ui->tableView->resizeColumnsToContents();
    }
    else
    {
        model->database().rollback();
        QMessageBox::warning(this, tr("Cached Table"), tr("The database reported an error: %1").arg(model->lastError().text()));
    }


Заранее спасибо :)
molchanoviv Дата 26.8.2010, 10:58
  Тема переехала в раздел MVC
potkin Дата 26.8.2010, 10:11
  molchanoviv,
Спасибо всё заработало :)
molchanoviv Дата 26.8.2010, 9:53
  Если надо одну строку, то view.setSelectionMode(QAbstractItemView::SingleSelection); а затем view.selectionModel()->selectedIndexes().first().row() только не забудь проверить список на пустоту.
Litkevich Yuriy Дата 26.8.2010, 9:51
 
Цитата(potkin @ 26.8.2010, 13:44) *
Не катит
данная фраза не информативна.
Что выделил? Что получил в результате? И т.д.
molchanoviv Дата 26.8.2010, 9:51
  view.selectionModel()->selectedIndexes().at(номер строки в выделении).row()
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 27.4.2024, 21:35