Мне нужно зафиксировать событие двойного щелчка в QPlainTextEdit, который находится внутри QDockWidget.
В моем фактическом коде я установил фильтр событий в QDockWidget для обработки операций изменения размера и в QPlainTextEdit для обработки событий двойного щелчка:
// Resize eventfilter
this->installEventFilter(this);
ui->myPlainTextEdit->installEventFilter(this);
Но, хотя это работает для QDockWidget, я не могу поймать событие двойного щелчка для QPlainTextEdit:
bool MyDockWidget::eventFilter(QObject *obj, QEvent *event) {
if (event->type() == QEvent::Resize && obj == this) {
QResizeEvent *resizeEvent = static_cast<QResizeEvent*>(event);
qDebug("Dock Resized (New Size) - Width: %d Height: %d",
resizeEvent->size().width(),
resizeEvent->size().height());
} else if (obj == ui->myPlainTextEdit && event->type() == QMouseEvent::MouseButtonDblClick) {
qDebug() << "Double click";
}
return QWidget::eventFilter(obj, event);
}
С этим кодом сообщение «Двойной щелчок» никогда не отображается. Есть идеи, что не так с кодом?
if
? Проверьте, получаете ли вы вообще какие-либо события оui->myPlainTextEdit
. Кроме того, почему ваш объект устанавливает на себя фильтр событий? Это может быть проблемой. Вместо этого просто переопределитеevent()
. - person sashoalm   schedule 23.07.2015event()
? - person hteso   schedule 23.07.2015if (event->type() == QEvent::MouseButtonDblClick){qDebug() << obj->objectName();}
- person techneaz   schedule 23.07.2015mouseDoubleClickEvent
вместоMouseButtonDblClick
, но я не могу найти, как использовать первый наif
поскольку он не является частьюQEvent
doc.qt.io/qt-5/qplaintextedit .html#mouseDoubleClickEvent - person hteso   schedule 23.07.2015