Всем привет!
Вопрос: есть одно большое поле, в которое я вставляю свои виджеты - разное количество, в зависимости от данных.
Отрисовка происходит в переопределенном paintEvent.
Нужно просто реализовать выбор одного виджета из всех остальных.
Конкретнее - у меня в виджете есть флаг:
bool isActive;
Далее переопределенные события:
void Widget::focusOutEvent(QFocusEvent *event)
{
isActive = false;
}
void Widget::mousePressEvent(QMouseEvent *event)
{
isActive = true;
if(event->type() == QEvent::WindowDeactivate) isActive = false;
this->update();
}
Соответственно, при клике на виджет устанавливается флаг isActive, отрисовка в paintEvent просиходит в зависимости от этого флага. Зер гуд)
А как теперь
снять выделение виджета при клике на другом виджете?
Событие focusOutEvent не срабатывает (хотя пробовал и в конструкторе устанавливать setFocus(), setWindowFlags(Qt::Tool) и вызывать focusWidget()).
Есть еще changeEvent ... но там все события, а здесь уже отфильтрованные ... вообщем как быть?
Вообще как решается подобная задача, через focus - события? Почему тогда они могут не приходить?
Должна же эта задача решаться событийно, без сохранения состояния всех виджетов!?