【发布时间】:2010-11-11 20:32:29
【问题描述】:
我想在用户释放Ctrl+C时调用一些自定义复制代码。当 C 在 Ctrl 之前释放时,Qt 发送一个与QKeySequence::Copy 匹配的键事件。当Ctrl在C之前释放时,释放事件不匹配。
当按键释放事件伴随Ctrl进来时,有没有办法查看C是否仍然被按住?
当我不处理 Ctrl 被首先释放时,该事件被传递并执行常规复制,这正是我不希望发生的事情。
bool
MyWidget::eventFilter(QObject* object, QEvent* event)
{
// the text edit box filters its events through here
if (object == m_text_edit_box)
{
if (event->type() == QEvent::KeyPress)
{
QKeyEvent *key_event = static_cast<QKeyEvent*>(event);
if (key_event->matches(QKeySequence::Copy))
{
// don't do anything and don't pass along event
return true;
}
}
else if (event->type() == QEvent::KeyRelease)
{
QKeyEvent *key_event = static_cast<QKeyEvent*>(event);
if (key_event->matches(QKeySequence::Copy))
{
// we only get in here if 'c' is released before ctrl
callCustomCopy();
return true;
}
}
}
// pass along event
return false;
}
【问题讨论】:
标签: c++ qt events keyboard copy-paste