Russian Qt Forum

Программирование => Общий => Тема начата: Igors от Ноябрь 28, 2017, 20:25



Название: Номера строк
Отправлено: Igors от Ноябрь 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 )  
{
???
}

Спасибо


Название: Re: Номера строк
Отправлено: Swa от Ноябрь 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);


Название: Re: Номера строк
Отправлено: Igors от Ноябрь 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 должен стать меньше


Название: Re: Номера строк
Отправлено: Swa от Ноябрь 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


Название: Re: Номера строк
Отправлено: Igors от Декабрь 02, 2017, 08:40
R.top = 10 - (min(10, 5 + 10)  - 5) = 10 - (10 - 5) = 5
Да, верно, это я ошибся. Спасибо