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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Редактирование QTableView  (Прочитано 11095 раз)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #15 : Август 11, 2011, 22:39 »

Как-то так:
Код
C++ (Qt)
void uslStandardItemModel::editFinish(const QModelIndex& index){
 
   if (index.column() == 2 || index.column() == 4) {
       qDebug() << "Цена:" + itemData(index).value(2).toInt();
       qDebug() << "Кол: " + itemData(index).value(4).toInt();
       double summa = this->itemData(index).value(2).toDouble() * this->itemData(index).value(4).toInt();
       qDebug() << summa;
       setData( this->index( index.row(), <result_column> ), QVariant( summa ) );
   }
}
Записан

Qt 5.11/4.8.7 (X11/Win)
NetWorm
Гость
« Ответ #16 : Август 12, 2011, 04:23 »

Код
C++ (Qt)
itemData(index).value(2).toInt();
- получается вот тут ничего нет. т.е. он типа ничего не получает!!!
Записан
NetWorm
Гость
« Ответ #17 : Август 12, 2011, 20:02 »

Код
C++ (Qt)
void uslStandardItemModel::editFinish(QModelIndex index){
   double cena = 0.00;
   int count   = 0;
   if (index.column() == 2)
       cena = this->itemData(index).value(0).toDouble();
   if (index.column() == 4)
       count   = this->itemData(index).value(0).toInt();
 
   double summa = cena * count;
   setData(this->index(index.row(),5),QVariant(summa));
}
 

Он выполняет это несколько раз? т.е. сколько столбцов столько раз выполняет цикл???
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #18 : Август 13, 2011, 15:28 »

Код
C++ (Qt)
itemData(index).value(2).toInt();
- получается вот тут ничего нет. т.е. он типа ничего не получает!!!
А почему бы прямо из индекса не брать данные?
Код
C++ (Qt)
index.data().toInt()
Записан

Qt 5.11/4.8.7 (X11/Win)
NetWorm
Гость
« Ответ #19 : Август 13, 2011, 16:37 »

Код
C++ (Qt)
   double cena = itemData(this->index(index.row(),2)).value(0).toDouble();
   int count   = itemData(this->index(index.row(),4)).value(0).toInt();
 
   double summa = cena * count;
   this->setData(this->index(index.row(),5),summa);

Я уже сделал вот так!!!!! Оно просто выполняется столько раз сколько колонок. А так я каждый раз получаю именно значение той колонки которую мне нужно....

Думаю вопрос закрыт... Благодарю за помощь!!!!
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #20 : Август 13, 2011, 18:55 »

При изменении значения в editFinish() опять отработает сигнал и снова вызовется editFinish(). По идее могло бы и зациклиться. Нужно просто менять значение 5-й колонки только при изменении 2-й или 4-й.
Записан

Qt 5.11/4.8.7 (X11/Win)
NetWorm
Гость
« Ответ #21 : Август 13, 2011, 20:38 »

так придется заводить внешнюю переменную и следить за ее обнулением! Но мне этого так не хочется!!
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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