Реализовал класс-наследник QComboBox, который позволяет выбирать несколько элементов. Для этого создал свою модель и выполняю отрисовку элементов при помощи QStyledItemDelegate (т.к. иначе в некоторых окружениях флажки не отображаются). Осталась одна проблема: выпадающий список закрывается сразу же после щелчка на каком-то элементе. Мне же нужно, чтобы список закрывался только тогда, когда курсор покинет область выдпадающего списка или пользователь щелкнет за его пределами.
Пробовал переопределить
hidePopup()void MyCombo::hidePopup()
{
if (!view()->underMouse())
{
QComboBox::hidePopup();
}
}
Но в Qt 5.5 такой вариант не работает. Попытался сделать через
eventFilter() (обработка правой клавиши мыши нужна для других целей)
bool MyCombo::eventFilter(QObject *object, QEvent *event)
{
if (event->type() == QEvent::MouseButtonRelease)
{
if (static_cast<QMouseEvent *>(event)->button() == Qt::RightButton)
{
return true;
}
if (object == view())
{
return true;
}
}
return false;
}
но так игнорируются все клики и нельзя снять/установить флажок.
Может, подскажете как реализовать нужное поведение?