Я написал код немного, как это, где я хотел поставить древовидное представление внутри поля со списком, и мне нужно было предпринять действие, когда был установлен флажок на дереве. То, что я закончил, - это установить фильтр событий в поле со списком, чтобы перехватить щелчки мыши, выяснить, где происходит щелчок мыши, а затем принять меры. Вероятно, вы можете сделать то же самое с вашим значком. Вот код:
bool TreeComboBox::eventFilter(QObject* object, QEvent* event)
{
if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease)
{
QMouseEvent* m = static_cast<QMouseEvent*>(event);
QModelIndex index = view()->indexAt(m->pos());
QRect vrect = view()->visualRect(index);
if(event->type() == QEvent::MouseButtonPress &&
(model()->flags(index) & Qt::ItemIsUserCheckable) &&
vrect.contains(m->pos()))
{
// Your action here
ToggleItem(index);
UpdateSelectionString();
}
if (view()->rect().contains(m->pos()))
skipNextHide = true;
}
return QComboBox::eventFilter(object, event);
}
Где у вас есть эта иконка? Всегда, помимо текста, посмотрите на: http://doc.trolltech.com/4.6/qcombobox.html#addItem-2 или только при перемещении мыши над элементом? –
Сколько пользователей ожидает, что элемент будет удален, когда вы нажмете на значок в выпадающем списке? Я хотел бы создать отдельную кнопку удаления, кроме выпадающего списка, и сначала позволить пользователю выбрать элемент, который он хочет удалить. –
Для Руперта - у меня нет проблем с получением значка. Я хочу получать события мыши, когда пользователь нажимает на него. – Dutt