Russian Qt Forum

Qt => Базы данных => Тема начата: tnsr от Декабрь 12, 2013, 00:49



Название: данные в таблицу не сбрасываюся(!!изменено)
Отправлено: tnsr от Декабрь 12, 2013, 00:49
Всем, здравствуйте.
В общем есть такой код:
Код:
void Browser::showTable(const QString &t)
{
    QSqlTableModel *model = new QSqlTableModel(table, connectionWidget->currentDatabase());
    model->setEditStrategy(QSqlTableModel::OnRowChange);
    model->setTable(connectionWidget->currentDatabase().driver()->escapeIdentifier(t, QSqlDriver::TableName));
    model->select();
    if (model->lastError().type() != QSqlError::NoError)
        emit statusMessage(model->lastError().text());
    table->setModel(model);
    table->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
 
    connect(table->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),
            this, SLOT(currentChanged()));
    updateActions();
}
OnRowChange - изменения видимо должны сбрасываться при смене строки(может еще при каких событиях?)
но у меня ничего в базу не попадает.
может еще у кого есть qt и mysql и есть возможность проверить эту программу(она в папке demos/sqlbrowser)?
почему может не отрабатывать setEditStrategy?
как это отследить? я еще ни разу не пользовался отладчиками для c++.
может подскажете как.


Название: Re: данные в таблицу не сбрасываюся(!!изменено)
Отправлено: tnsr от Декабрь 20, 2013, 08:21
Думаю, что это баг в QSqlTableView.
Видимо, остальные вручную меняют его поведение.
Буду использовать Qt5.
https://bugreports.qt-project.org/browse/QTBUG-35671 (https://bugreports.qt-project.org/browse/QTBUG-35671)


Название: Re: данные в таблицу не сбрасываюся(!!изменено)
Отправлено: sergek от Декабрь 20, 2013, 20:38
Changed - это ведь прошедшее время? Т.е. после изменения строки. А вы хотите, чтобы до?


Название: Re: данные в таблицу не сбрасываюся(!!изменено)
Отправлено: tnsr от Декабрь 20, 2013, 21:47
Changed - это ведь прошедшее время? Т.е. после изменения строки. А вы хотите, чтобы до?

sergek,

Вы нечетко сформулировали вопрос, но попытаюсь ответить цитатой из указанной ссылки
Цитировать
if i change data in any filed and press Enter, then data saved in database without row change
if not press enter - data lost after field lost focus - it is not correctly. I was expect that data will be save after row change without press Enter(How will be if record is one - i don't know)
В общем скомпилил прогу на Qt5 - работает нормально - данные сохраняются при смене строки.
Как я понял из слов разработчика Qt - в Qt4 все пишут вручную, видимо, через события.

С уважением.