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

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

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

Сообщений: 11445


Просмотр профиля
« : Ноябрь 28, 2017, 20:25 »

Добрый день

Вроде бы простая, но очень противная задачка Улыбающийся Есть QRect который хранит индексы выбранных ячеек в таблице (полагаем что выбирать можно только прямоугольником). Например
Цитировать
QRect R(0, 10, 0, 20);  // выбраны ячейки в строках с 10 по 20 включительно
Нужно отследить удаление строк,
Код
C++ (Qt)
// params:
// R = selection to adjust
// delRow = start row to delete
// numDel = count of deleted rows
void AdjustSelection( QRect & R, int delRow, int numDel )  
{
???
}

Спасибо
Записан
Swa
Самовар
**
Offline Offline

Сообщений: 170


Просмотр профиля
« Ответ #1 : Ноябрь 28, 2017, 21:17 »

Если я правильно понял задачу:
Код:
R.top = delRow > R.top ? R.top : R.top - (min(R.top, delRow + numDel ) - delRow);
R.bottom = delRow > R.bottom ? R.bottom : R.bottom - min(numDel , R.bottom- delRow +1);
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Ноябрь 29, 2017, 18:48 »

Если я правильно понял задачу:
Код:
R.top = delRow > R.top ? R.top : R.top - (min(R.top, delRow + numDel ) - delRow);
R.bottom = delRow > R.bottom ? R.bottom : R.bottom - min(numDel , R.bottom- delRow +1);
Пусть данные такие
R = (0, 10, 0, 20) 
delRow = 5
numDel = 10

Тогда выходит
R.top = 10 - (min(10, 5 + 10)  - 10) = 10 - (10 - 10) = 10

Не получается, R.top должен стать меньше
Записан
Swa
Самовар
**
Offline Offline

Сообщений: 170


Просмотр профиля
« Ответ #3 : Ноябрь 29, 2017, 22:41 »

Тогда выходит
R.top = 10 - (min(10, 5 + 10)  - 10) = 10 - (10 - 10) = 10

Не получается, R.top должен стать меньше

R.top = 10 - (min(10, 5 + 10)  - 5) = 10 - (10 - 5) = 5
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Декабрь 02, 2017, 08:40 »

R.top = 10 - (min(10, 5 + 10)  - 5) = 10 - (10 - 5) = 5
Да, верно, это я ошибся. Спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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