• 8337阅读
  • 9回复

【提问】如何响应得到焦点事件 [复制链接]

上一主题 下一主题
离线chip_7
 
只看楼主 倒序阅读 楼主  发表于: 2006-02-16
各位大虾,我有个问题想请教:
    我的想法是点击一个lineedit(就是空行),也就是它得到了焦点,然后就弹出一个dialog
    查过lineedit的函数后,发现没有类似的信号,
    那只好自己建信号了,我就又创建了一个类line,它继承了LineEdit,我又在里面加了一句
    signals:void out();
    然后又写上了out的函数体void line::out(){}
    但编译时就出错了
    现在真不知该怎么办才好~~~~
[ 此贴被XChinux在2006-02-15 22:32重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2006-02-16
我今天刚装了MagicLinux 2.0,里面还没装Qt 4.1.0,
不过我好像记得即使它没有得到焦点的信号,但是有enterEvent ( QEvent * )这个虚函数接口,
你可以实现一个void enterEvent(QEvent *)在里面可写自己需要的东西(弹出一个对话框),不知道是否正确,你可先试验一下。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线lj_0212

只看该作者 2楼 发表于: 2006-02-16
好像应该有focusInEvent(QFocusEvent *e)这个虚函数吧。
离线lj_0212

只看该作者 3楼 发表于: 2006-02-16
enterEvent好像是响应鼠标进入当前widget的,但当前widget并没有得到focus,楼主还是使用focusInEvent吧
离线XChinux

只看该作者 4楼 发表于: 2006-02-16
确实如楼上所述,有

focusInEvent ( QFocusEvent * )
focusOutEvent ( QFocusEvent * )

这两个
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线zccmin
只看该作者 5楼 发表于: 2006-02-20
我有点没明白楼主的意思:单对lineedit来说,已经是一个很完善的类,他本身自点了很多槽其中也包括得到焦点的槽,setFocus()。你只要在鼠标点击槽中加上 lineedit->setFocus ()就行。
至于你要弹出对话框,也只要在鼠标点击槽中加上就可以。不知道我说的跟楼主的意思是否一样呢?
离线chip_7
只看该作者 6楼 发表于: 2006-02-22
setFocus()只是成员函数,不是槽(slot).
不是每个成员函数都能做槽的,尽管槽也是函数.
  具体你可以看看每个类的说明.
www.qiliang.net比较好,还翻译了许多!
离线chip_7
只看该作者 7楼 发表于: 2006-02-22
五楼的同志,我弄错了.setfocus()也是槽!!!!_________纠正一下

我的问题是想把焦点是否获得作为---信号---,而不是---槽---,以判断焦点然后处理其他函数(slot)
离线twosnowman
只看该作者 8楼 发表于: 2006-02-23
插一句: signal是由moc生成的,只有声明,没有实现。所以你的函数体实现是不可以的。
离线ww18031901

只看该作者 9楼 发表于: 2008-05-23
晕  LZ  对你们 说的  将会 刚到  很  无奈。
快速回复
限100 字节
 
上一个 下一个