при клике мыши по разным элементам таблицы,срабатывают оба сигнала,что не удивительно )))
Можно ли как-нить сделать так,чтобы сигнал click() срабатывал бы только когда сликаешь по одному и тому же элементу,т.е. когда не срабатывает сигнал selectionChanged(). А в остальных бы случаях срабатывал бы только selectionChanged()
Если я правильно понял, Вы хотите так:
- если пользователь кликнул (нажал и отпустил кнопку мыши) на уже выбранной ячейке - тогда Вы что-то делаете
- иначе (ячейка не была выбрана) - просто смена фокуса
Тогда надо изучать "хронологию" - пусть первым приходит selectionChanged. Тогда заведите переменную (член класса таблицы) напр. так (псевдокод)
void selectionChanged( ...)
{
mSelectionChangedFlag = true; // запоминаем что пришел сигнал selectionChanged
....
}
void click(... )
{
bool theSelectionChangedFlag = mSelectionChangedFlag; // копируем флаг
mSelectionChangedFlag = false; // зачищаем для след. сеанса
...
if (!theSelectionChangedFlag) {
.... // ага, это "новая" ячейка, прпопускаем
}
else {
.... // click на уже выбранную - акция
}
А вообще говоря, я согласен с ответившими - если операция зависит от контекста (на уже выбранную - так, иначе - по-другому)- это всегда сложновато и не очень удобно. Хорошая практика - использовать клавиши Alt и/или Ctl для спец. операций