我需要捕获位于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);
}使用此代码,将不会显示“双击”消息。你知道密码有什么问题吗?
发布于 2015-07-23 09:11:42
QTextEdit继承QScrollView,当双击QTextEdit的视口时,视图端口将接收双击事件。您可以通过双击文本编辑的边缘来交叉检查当前代码。它会捕捉到这一事件。QMouseEvent捕获单击位置:
QMouseEvent *mouseEvent =static_cast(事件);qDebug()<https://stackoverflow.com/questions/31581453
复制相似问题