Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: druxa@mail.com от Май 18, 2007, 00:24



Название: Как получить указатель активного QComboBox в приложении? 4.3
Отправлено: druxa@mail.com от Май 18, 2007, 00:24
В приложении есть несколько QComboBox, написал обработку события правой кнопки мыши по элементам QComboBox, для удаления элементов.
Как передать в обработчик ссылку на текущий QComboBox?
Что бы вместо ui.accountComboBox был текущий.
bool dataForm::eventFilter(QObject * o, QEvent * e )
{
  if (o == ui.accountComboBox->view() && e->type() == QEvent::ContextMenu) {
     QModelIndex columnIndex;
     columnIndex = ui.accountComboBox->view()->indexAt(static_cast<QMouseEvent*>( e )->pos());
     int i = columnIndex.row();
     ui.accountComboBox->removeItem(i);
     QString s = "hi";
     qWarning(s.toAscii());
     return true;
  }
  return false;
}


Название: Как получить указатель активного QComboBox в приложении? 4.3
Отправлено: Racheengel от Май 18, 2007, 08:36
hasFocus ()
или
QApplication::focusWidget ()


Название: Как получить указатель активного QComboBox в приложении? 4.3
Отправлено: druxa@mail.com от Май 18, 2007, 18:29
Можно подробнее, как получить ссылку на текущий QComboBox?

добавлено спустя 3 часа 11 минут:

 Как отсдедить изменения фокуса по элементам?
connect(qApp, SIGNAL(focusChanged(QWidget *,QWidget *)), this, SLOT(cpPointer()));

void dataForm::cbPointer()
{
   QString s ="cbPointer()";
   qWarning(s.toAscii());
   if(qApp->focusWidget() == ui.accountComboBox) cb2 = ui.accountComboBox;
   if(qApp->focusWidget() == ui.customerComboBox) cb2 = ui.customerComboBox;
}
Почему не работае?


Название: Как получить указатель активного QComboBox в приложении? 4.3
Отправлено: Racheengel от Май 18, 2007, 19:53
зачем вообще так делать? сделай сабкласс от QComboBox и в нем удаляй все, что надо, по нажатию правой кнопки.

QApplication::focusWidget () вернет как раз текущий элемент (т.е. с фокусом ввода).