Подтвердить что ты не робот

Qt QWidget click

У меня есть собственный класс, основанный на QWidget. Я поместил этот виджет в QMainWindow, и мне нужно щелкнуть мышью на этом виджете.

Я пробовал:

connect(my_widget, SIGNAL(clicked()), this, SLOT(exit(0)));

Но ничего не происходит. Как я могу это сделать?

4b9b3361

Ответ 1

QWidget не имеет сигнала clicked(), а QMainWindow не имеет слота exit(). Невозможно подключиться к неиспользуемому сигналу и к неиспользуемому слоту. Возвратное значение подключения должно быть истинным, если соединение выполнено успешно. Проверьте это значение, когда вы делаете подключения, чтобы убедиться, что ваш код будет работать правильно.

Чтобы выйти из приложения, вы должны позвонить qApp->quit()

Кроме того, как уже упоминалось другими, вам придется установить eventFilter или переопределить

void QWidget::mousePressEvent ( QMouseEvent * event )   [virtual protected]

или

void QWidget::mouseReleaseEvent ( QMouseEvent * event )   [virtual protected]

методы.

В официальном документе Qt есть много примеров, this, например, повторно применяет метод mousePressEvent(QMouseEvent *event).

Для параметра eventFilter см. этот небольшой пример.

Надеюсь, что это поможет.

Ответ 2

A QWidget не имеет сигнала clicked. Чтобы сделать эту работу, используйте события. Все виджеты поддерживают события, поэтому есть некоторая ручная работа, но не много:

  • Переопределите функцию event для вашего виджета (который вы получаете из QWidget
  • Отвечайте на события типа QEvent:: MouseButtonPress

В качестве альтернативы добавьте метод eventFilter.

Google классы и методы, которые я упомянул для образцов кода, и получить полное решение в зависимости от ваших конкретных потребностей.