qt 键盘事件 求助各位大侠
各位大侠,想请教个问题
怎么用按钮来代替键盘事件呀?就是说如果按下键盘中的某个键产生一个键盘事件,按下按钮时会产生一个一模一样的事件
另外:
bool QWidget::filter (int unicode, int keycode, int modifiers,
bool isPress, bool /*autoRepeat*/)
{
if (isPress && (Qt::AltModifier & modifiers) && (Qt::Key_Z == keycode))
{
printf("lijing ni yao jia you a !!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
}
这个filter函数是怎么个意思?是说当按下Alt + Z时才会进入到这个函数吗?这个能用按钮来模拟吗?(就是有两个按钮,Alt和Z在同时点击两个按钮时进入filter函数)
filter和Eventfilter有什么区别呢?
期待各位大侠的回答哦!不胜感激!!!!!
[解决办法]
先说一点题外话,这个函数没有return 编译肯定过不去。
你的这个filter和EventFilter的区别
filter就是一个普通的函数
EventFilter是一个QWidget类的虚函数。用于过滤其他控件的事件。
用按钮模拟键盘事件,其实没有必要,键盘事件被处理后,最后就是要执行一些代码
完成一些特定的功能。既然都有按钮了,为什么还要费劲转换成键盘事件。
[解决办法]
自己创建个QKeyEvent 填充进去key值mod值然后SendEvent或者PostEvent出去
[解决办法]
类似于
QKeyEvent event(QEvent::KeyPress, key , ascii , 0 , str , false , 0);
QApplication::sendEvent(app->focusWidget(), &event);
[解决办法]
http://doc.trolltech.com/4.4/qt.html#Key-enum
键盘事件的枚举值,参照这些枚举值,你自己的按钮改写键盘事件发射这些值就可以了