Events 忽略Qt中的鼠标和键盘事件
在Qt中,如何忽略所有鼠标和键盘事件,然后停止忽略它们?即:点击一个按钮,忽略子项中的所有事件;再次单击,不要忽略。清楚了吗? 我有以下几行,但也许我做错了什么:Events 忽略Qt中的鼠标和键盘事件,events,qt,keyboard,mouse,Events,Qt,Keyboard,Mouse,在Qt中,如何忽略所有鼠标和键盘事件,然后停止忽略它们?即:点击一个按钮,忽略子项中的所有事件;再次单击,不要忽略。清楚了吗? 我有以下几行,但也许我做错了什么: setAttribute(Qt::WA_TransparentForMouseEvents); setFocusPolicy(Qt::NoFocus); 您可以使用: QWidget::setEnabled(false) 它会禁用小部件的鼠标和键盘事件。您可以在鼠标和键盘事件上使用事件过滤器来过滤某些按键或鼠标单击(如果需要):
setAttribute(Qt::WA_TransparentForMouseEvents);
setFocusPolicy(Qt::NoFocus);
您可以使用:
QWidget::setEnabled(false)
它会禁用小部件的鼠标和键盘事件。您可以在鼠标和键盘事件上使用事件过滤器来过滤某些按键或鼠标单击(如果需要):
yourWidget->installEventFilter(this);
bool YourFrm::eventFilter(QObject*poobject,QEvent*pEvent)
{
如果(pEvent->type()==QEvent::KeyPress)
{
QKeyEvent*pKeyEvent=静态施法(pEvent);
int PressedKey=pKeyEvent->key();
如果(按键==Qt::键返回)
{
//筛选器返回键。。。。
返回true;
}
//标准事件处理
返回QObject::eventFilter(POObject,pEvent);
}
else if(pEvent->type()==QEvent::MouseButtonPress)
{
QMouseEvent*pMouseEvent=静态_转换(pEvent);
…//等等。。。
}
其他的
{
//标准事件处理
返回QObject::eventFilter(POObject,pEvent);
}
}
有关这方面的更多信息:
希望有帮助 你是指QGraphicsItem吗 如果是,你可以打电话
void QGraphicsItem::setEnabled ( bool enabled )
要在以后激活事件,由于项目不再接收事件,您必须经过场景,因为您无法直接接收项目上的事件。如果您的问题不是使用GraphicsView框架,而是使用qt的其他部分,那么这几乎是相同的过程:
你可以致电:
QWidget::setEnabled(false) //like Massimo said
为了响应小部件,只需检测应用程序中对象内的按下事件,就可以在小部件上调用`setEnable(true)
希望有帮助!
`不要使用setFocusPolicy(Qt::NoFocus);它会将事件传播到父级。仅使用setAttribute(Qt::WA_TransparentForMouseEvents) 注:
setAttribute(Qt::WA_TransparentForMouseEvents)代码>--使小部件对鼠标事件透明<代码>设置启用(错误)代码>--使小部件忽略鼠标和键盘事件(但似乎仍在默默地使用它们)。耶!这适用于我只想使用键盘导航控件的QTableView。有没有类似的方法可以忽略键盘事件?
QWidget::setEnabled(false) //like Massimo said