Russian Qt Forum
Сентябрь 30, 2024, 10:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: данные в таблицу не сбрасываюся(!!изменено)  (Прочитано 3094 раз)
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++.
может подскажете как.
« Последнее редактирование: Декабрь 14, 2013, 23:17 от tnsr » Записан
tnsr
Гость
« Ответ #1 : Декабрь 20, 2013, 08:21 »

Думаю, что это баг в QSqlTableView.
Видимо, остальные вручную меняют его поведение.
Буду использовать Qt5.
https://bugreports.qt-project.org/browse/QTBUG-35671
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #2 : Декабрь 20, 2013, 20:38 »

Changed - это ведь прошедшее время? Т.е. после изменения строки. А вы хотите, чтобы до?
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
tnsr
Гость
« Ответ #3 : Декабрь 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 все пишут вручную, видимо, через события.

С уважением.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.121 секунд. Запросов: 23.