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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlTableModel & QTableView редактирование целых в полях  (Прочитано 3263 раз)
DpoHro
Гость
« : Май 06, 2011, 10:20 »

Создаем модель и подключаем к TableView
Код:
	m_accountsModel = new QSqlTableModel(this, db);
m_accountsModel->setTable("accounts");
m_accountsModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
m_accountsModel->select();

m_accountsModel->setHeaderData(0, Qt::Horizontal, tr("ID"));
m_accountsModel->setHeaderData(1, Qt::Horizontal, tr("Login"));
m_accountsModel->setHeaderData(2, Qt::Horizontal, tr("Password"));
m_accountsModel->setHeaderData(3, Qt::Horizontal, tr("Status"));
m_accountsModel->setHeaderData(4, Qt::Horizontal, tr("Errors"));
m_accountsModel->setHeaderData(5, Qt::Horizontal, tr("Tryings"));

ui.m_viewAccounts->setModel(m_accountsModel);
//ui.m_viewAccounts->setColumnHidden(0, true);

Вставка:
Код:
		QModelIndex insertIndex = ui.m_viewAccounts->currentIndex();

QSqlRecord record = model->record();
//record.setValue( "id", NULL);
record.setValue( "login", ui.m_edLogin->text());
record.setValue( "password", ui.m_edPassword->text());
record.setValue( "status", 0);

int row=model->rowCount();
model->insertRow(row);
bool ok = model->setRecord(row, record);
model->submitAll();
//model->select();

Поля status, trying, errors - в бд объявлены как INTEGER.
В процессе экспериментов со вставкой получалось что они редактировались спинбоксом, автоматически.
В этом варианте - все поля редактируются эдитом.

Как назначить Спин для целых полей?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Май 06, 2011, 10:21 »

Свой делегат написать.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
DpoHro
Гость
« Ответ #2 : Май 06, 2011, 11:04 »

Понятно, а при
EditStrategy - OnManualSubmit
Как правильно отлавливаются изменения при редактировании полей для последующего сабмита?
Записан
aliks-os
Гость
« Ответ #3 : Май 09, 2011, 14:30 »

При переопределении делегата, поищи сигнал editingFinished(). Кроме того, можешь поработать с commitData() closeEditor().
В принципе эта тема довольно таки описана на этом сайте.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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