Russian Qt Forum
Сентябрь 30, 2024, 10:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как получить указатель активного QComboBox в приложении? 4.3  (Прочитано 3404 раз)
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;
}
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Май 18, 2007, 08:36 »

hasFocus ()
или
QApplication::focusWidget ()
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
druxa@mail.com
Гость
« Ответ #2 : Май 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;
}
Почему не работае?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Май 18, 2007, 19:53 »

зачем вообще так делать? сделай сабкласс от QComboBox и в нем удаляй все, что надо, по нажатию правой кнопки.

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

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 23.