crossplatform.ru

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

> как отловить dataChanged?, сигнал не принимается :(
dzyk
  опции профиля:
сообщение 12.9.2008, 15:35
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 13.4.2008
Пользователь №: 148

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вообщем, хочу сделать так, чтобы TableModel после изменения одной из ячеек строке в 100ой, например - виджет снова вернулся на 100ую строку, которую редактировал пользователь. Для этого хочу отловить событие
void QAbstractItemModel::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) [signal]

.. и ничего не получается :(

сигнал принимает объект главного окна... отлично обрабатываются события от QAbstractItemView.
А вот QSqlTableModel и QAbstractItemModel ну никак ... помогите.!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
dzyk
  опции профиля:
сообщение 12.9.2008, 17:51
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 13.4.2008
Пользователь №: 148

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 12.9.2008, 18:39) *
а точнее

QSqlTableModel *sqm_tecushie;
MyWindow::MyWindow(QWidget *parent)
    : QMainWindow(parent)
{
sqm_tecushie = new QSqlTableModel(this,db);
...
connect(sqm_tecushie, SIGNAL( dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) ), this, SLOT(sqm_tecushie_ dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )));
...
}

void MyWindow::sqm_tecushie_dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )){

QMessageBox::critical(0,  "Внимание","Произошло событие dataChanged - пользователь изменил данные.", QMessageBox::Cancel);
}


смотрел исходники класса ... перепробывал все стратегии.. в тч когда отправляется сигнал dataChange
bool QSqlTableModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
    
    case OnFieldChange: {
        ...
    
    case OnRowChange:
      ...
        emit dataChanged(index, index);
       .
    case OnManualSubmit: {
       ...
        emit dataChanged(index, index);
       .
  .
}
Причина редактирования: у тэга код указывай параметр: code=cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 3:29