• 7673阅读
  • 7回复

sendEvent 函数 [复制链接]

上一主题 下一主题
离线wsszlj
 

只看楼主 倒序阅读 楼主  发表于: 2009-09-21
我想在一个窗口里 用两个按钮控制 文本框里的光标,代码如下:

connect(btnLeft,SIGNAL(clicked()),this,SLOT(wordPressed()));
wordPressed()
{
QKeyEvent  keyEvent(QEvent::KeyPress, Qt::Key_Left, Qt::NoModifier);
QApplication::sendEvent(btnLeft,&keyEvent);
}

这段代码有没有问题,我没有实现预定的功能。
sendEvent 函数第一参数 在这里是 btnLeft  还是 文本框plineedit?
        
        
离线rqzrqh

只看该作者 1楼 发表于: 2009-09-21
send没错,应该是没有产生一个可用的事件
QKeyEvent event(QEvent::KeyPress, Key_X, 'X', 0);

但是这样写的话lineedit是接收不到事件的
离线wsszlj

只看该作者 2楼 发表于: 2009-09-21
引用第1楼rqzrqh于2009-09-21 12:47发表的  :
send没错,应该是没有产生一个可用的事件
QKeyEvent event(QEvent::KeyPress, Key_X, 'X', 0);
但是这样写的话lineedit是接收不到事件的


那怎么 写啊?
离线rqzrqh

只看该作者 3楼 发表于: 2009-09-21
你这样写的目的是什么?
这样做和点击按钮,然后再按下键盘上的某一个字母没有区别。
既然焦点没有在lineedit上,事件又怎么会传递到lineedit呢?
离线wsszlj

只看该作者 4楼 发表于: 2009-09-21
引用第3楼rqzrqh于2009-09-21 13:02发表的  :
你这样写的目的是什么?
这样做和点击按钮,然后再按下键盘上的某一个字母没有区别。
既然焦点没有在lineedit上,事件又怎么会传递到lineedit呢?



我的目的是 虚拟键盘  
我在文本框里输入了字符之后 我想通过两个按钮 把光标移到我想要的任何位置(文本框里的)
离线rqzrqh

只看该作者 5楼 发表于: 2009-09-21
把那两个按钮设置成没有焦点,这样当点击按钮的时候,焦点还是在文本框内
离线wsszlj

只看该作者 6楼 发表于: 2009-09-21
OK,问题已解决,谢谢!
离线rqzrqh

只看该作者 7楼 发表于: 2009-09-23
不好意思,说错了。

bool QCoreApplication::sendEvent ( QObject * receiver, QEvent * event )   [static]
快速回复
限100 字节
 
上一个 下一个