• 4952阅读
  • 10回复

能否禁用键盘。。。grabKeyboard。。。 [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 倒序阅读 楼主  发表于: 2009-09-06
qt里有禁用键盘的函数吗?我想点击一下按钮,然后让键盘失效,再点击一下,让键盘恢复工作。。。
[ 此帖被iiiyyyhhhsss在2009-09-07 15:18重新编辑 ]
离线jorneyr

只看该作者 1楼 发表于: 2009-09-06
可以啊,在application级实现事件处理
离线iiiyyyhhhsss

只看该作者 2楼 发表于: 2009-09-06
可否详细些许?
离线iiiyyyhhhsss

只看该作者 3楼 发表于: 2009-09-06
是否setKeyboardInputInterval()这个?
离线jorneyr

只看该作者 4楼 发表于: 2009-09-06
grabKeyboard也可以实现
离线iiiyyyhhhsss

只看该作者 5楼 发表于: 2009-09-06
grabKeyboard?QApplication里没有这个函数啊。。。
离线iiiyyyhhhsss

只看该作者 6楼 发表于: 2009-09-06
这个我发现在旧版本里还有,到了新版本就没有了。。。。
离线iiiyyyhhhsss

只看该作者 7楼 发表于: 2009-09-06
为什么那个setKeyboardInputInterval(int)的参数是int呢?该如何填?
离线iiiyyyhhhsss

只看该作者 8楼 发表于: 2009-09-06
呵呵,回头再看一下,在Widget里找到了grabKeyboard和grabMouse。。。。

不过我有一个疑问是,如果键盘和鼠标都被程序的某个控件grab了,而且程序没有设置其释放,那么岂不是要重启电脑了???
离线iiiyyyhhhsss

只看该作者 9楼 发表于: 2009-09-06
void QWidget::grabKeyboard ()

Grabs the keyboard input.

This widget receives all keyboard events until releaseKeyboard() is called; other widgets get no keyboard events at all. Mouse events are not affected. Use grabMouse() if you want to grab that.

The focus widget is not affected, except that it doesn't receive any keyboard events. setFocus() moves the focus as usual, but the new focus widget receives keyboard events only after releaseKeyboard() is called.

If a different widget is currently grabbing keyboard input, that widget's grab is released first.



根据它的描述,我想应该是要重启的。。。。

不过我最奇怪的是,为什么grabKeyboard是QWidget的成员,而却不是QPushButton的成员呢?他们之间是有继承关系的。。。。
离线iiiyyyhhhsss

只看该作者 10楼 发表于: 2009-09-06
看到了,的确是pushbutton的成员。。。。

还有就是一下代码:
  connect(m_ui->pushButton,SIGNAL(clicked()),this,SLOT(grabK()));

void MMW::grabk()
{m_ui->pushButton->grabKeyboard();
}

有了以上的连接,为什么实现不了按钮抓获键盘事件呢?键盘依然在其它地方能用。。。。。例如记事本还能写东西。。。
快速回复
限100 字节
 
上一个 下一个