Название: Как получить указатель активного 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 () вернет как раз текущий элемент (т.е. с фокусом ввода). |