crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> как отловить 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 ну никак ... помогите.!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.9.2008, 17:39
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(dzyk @ 12.9.2008, 19:35) *
и ничего не получается
Цитата(dzyk @ 12.9.2008, 19:35) *
ну никак
а точнее
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dzyk
  опции профиля:
сообщение 12.9.2008, 17:51
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.9.2008, 17:57
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


замечание первое и главное в функции:
connect у сигналов и слотов нельзя указывать имена параметров, только их тип.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dzyk
  опции профиля:
сообщение 12.9.2008, 18:13
Сообщение #5


Студент
*

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

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




Репутация:   0  


connect(sqm_tecushie, SIGNAL(dataChanged (QModelIndex, QModelIndex ) ), this, SLOT(sqm_tecushie_dataChanged (QModelIndex , QModelIndex )));

не помогло :(

Litkevich Yuriy,
Я ведь такую ошибку давно бы нашел.
Эх, кто бы попробовал отловить сигнал ... :rolleyes:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.9.2008, 18:15
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(dzyk @ 12.9.2008, 22:13) *
не помогло
а ты неправильно написал, ссылки-то зачем удалил, болжно быть так:
connect(sqm_tecushie, SIGNAL( dataChanged ( const QModelIndex &, const QModelIndex &) ), this, SLOT(sqm_tecushie_ dataChanged ( const QModelIndex &, const QModelIndex &)));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dzyk
  опции профиля:
сообщение 12.9.2008, 18:17
Сообщение #7


Студент
*

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

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




Репутация:   0  


Litkevich Yuriy, я когда код постил - брал из Ассистента, в моих исходниках connect написан верно.

Litkevich Yuriy, и beforeUpdate сигнал класса QSqlTableModel пробовал - :( ничего....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.9.2008, 18:19
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


и еще слоты и сигналы удобно отлаживать при наличие консоли. Добавь в файл проекта:
CONFIG += console

Цитата(dzyk @ 12.9.2008, 22:17) *
брал из Ассистента, в моих исходниках connect написан верно.
дай мне ссылку на пример из Асистента
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dzyk
  опции профиля:
сообщение 12.9.2008, 18:21
Сообщение #9


Студент
*

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

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




Репутация:   0  


Litkevich Yuriy, может вы сами попробуете ?? ну очень прошу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.9.2008, 18:23
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


выкладывай наипростейший пример в котором есть эта проблема
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.11.2024, 21:07